From 86178efa058dd2f7eb6b9c46fa6b6d233f0cafaf Mon Sep 17 00:00:00 2001 From: Charles MASSONG <c24masso@fl-tp-br-604.imta.fr> Date: Wed, 26 Feb 2025 16:31:06 +0100 Subject: [PATCH] Travail tp filtre --- AudioProc.xpr | 218 ++ docs/img/FSM.drawio.png | Bin 0 -> 129377 bytes docs/img/FSM.png | Bin 117251 -> 0 bytes .../0/e/0edd54b7fee8338b/0edd54b7fee8338b.xci | 298 ++ .../2024.1/0/e/0edd54b7fee8338b/clk_wiz_0.dcp | Bin 0 -> 13273 bytes .../0edd54b7fee8338b/clk_wiz_0_sim_netlist.v | 291 ++ .../clk_wiz_0_sim_netlist.vhdl | 216 ++ .../0/e/0edd54b7fee8338b/clk_wiz_0_stub.v | 31 + .../0/e/0edd54b7fee8338b/clk_wiz_0_stub.vhdl | 35 + proj/AudioProc.cache/sim/ssm.db | 11 + proj/AudioProc.cache/wt/project.wpc | 3 + proj/AudioProc.cache/wt/synthesis.wdf | 52 + proj/AudioProc.cache/wt/xsim.wdf | 4 + proj/AudioProc.hw/AudioProc.lpr | 7 + proj/AudioProc.ip_user_files/README.txt | 1 + .../ip/clk_wiz_0/clk_wiz_0.vho | 100 + .../ip/clk_wiz_0/clk_wiz_0_stub.v | 31 + .../ip/clk_wiz_0/clk_wiz_0_stub.vhdl | 35 + .../ipstatic/mmcm_pll_drp_func_7s_mmcm.vh | 680 ++++ .../ipstatic/mmcm_pll_drp_func_7s_pll.vh | 542 +++ .../ipstatic/mmcm_pll_drp_func_us_mmcm.vh | 680 ++++ .../ipstatic/mmcm_pll_drp_func_us_pll.vh | 555 +++ .../mmcm_pll_drp_func_us_plus_mmcm.vh | 886 +++++ .../ipstatic/mmcm_pll_drp_func_us_plus_pll.vh | 561 +++ .../clk_wiz_0/activehdl/README.txt | 50 + .../clk_wiz_0/activehdl/clk_wiz_0.sh | 258 ++ .../clk_wiz_0/activehdl/clk_wiz_0.udo | 0 .../clk_wiz_0/activehdl/compile.do | 25 + .../clk_wiz_0/activehdl/file_info.txt | 5 + .../sim_scripts/clk_wiz_0/activehdl/glbl.v | 84 + .../clk_wiz_0/activehdl/simulate.do | 14 + .../sim_scripts/clk_wiz_0/modelsim/README.txt | 50 + .../clk_wiz_0/modelsim/clk_wiz_0.sh | 287 ++ .../clk_wiz_0/modelsim/clk_wiz_0.udo | 0 .../sim_scripts/clk_wiz_0/modelsim/compile.do | 22 + .../clk_wiz_0/modelsim/file_info.txt | 5 + .../sim_scripts/clk_wiz_0/modelsim/glbl.v | 84 + .../clk_wiz_0/modelsim/simulate.do | 19 + .../sim_scripts/clk_wiz_0/modelsim/wave.do | 2 + .../sim_scripts/clk_wiz_0/questa/README.txt | 50 + .../sim_scripts/clk_wiz_0/questa/clk_wiz_0.sh | 297 ++ .../clk_wiz_0/questa/clk_wiz_0.udo | 0 .../sim_scripts/clk_wiz_0/questa/compile.do | 22 + .../sim_scripts/clk_wiz_0/questa/elaborate.do | 1 + .../clk_wiz_0/questa/file_info.txt | 5 + .../sim_scripts/clk_wiz_0/questa/glbl.v | 84 + .../sim_scripts/clk_wiz_0/questa/simulate.do | 19 + .../sim_scripts/clk_wiz_0/questa/wave.do | 2 + .../sim_scripts/clk_wiz_0/riviera/README.txt | 50 + .../clk_wiz_0/riviera/clk_wiz_0.sh | 264 ++ .../clk_wiz_0/riviera/clk_wiz_0.udo | 0 .../sim_scripts/clk_wiz_0/riviera/compile.do | 25 + .../clk_wiz_0/riviera/file_info.txt | 5 + .../sim_scripts/clk_wiz_0/riviera/glbl.v | 84 + .../sim_scripts/clk_wiz_0/riviera/simulate.do | 14 + .../sim_scripts/clk_wiz_0/vcs/README.txt | 50 + .../sim_scripts/clk_wiz_0/vcs/clk_wiz_0.sh | 345 ++ .../sim_scripts/clk_wiz_0/vcs/file_info.txt | 5 + .../sim_scripts/clk_wiz_0/vcs/glbl.v | 84 + .../sim_scripts/clk_wiz_0/vcs/simulate.do | 2 + .../sim_scripts/clk_wiz_0/xcelium/README.txt | 50 + .../clk_wiz_0/xcelium/clk_wiz_0.sh | 351 ++ .../clk_wiz_0/xcelium/file_info.txt | 5 + .../sim_scripts/clk_wiz_0/xcelium/glbl.v | 84 + .../sim_scripts/clk_wiz_0/xcelium/hdl.var | 0 .../sim_scripts/clk_wiz_0/xcelium/simulate.do | 7 + .../sim_scripts/clk_wiz_0/xsim/README.txt | 50 + .../sim_scripts/clk_wiz_0/xsim/clk_wiz_0.sh | 330 ++ .../sim_scripts/clk_wiz_0/xsim/cmd.tcl | 12 + .../sim_scripts/clk_wiz_0/xsim/file_info.txt | 3 + .../sim_scripts/clk_wiz_0/xsim/glbl.v | 84 + .../sim_scripts/clk_wiz_0/xsim/vlog.prj | 8 + proj/AudioProc.runs/.jobs/vrs_config_1.xml | 12 + .../.Vivado_Synthesis.queue.rst | 0 .../.Xil/clk_wiz_0_propImpl.xdc | 4 + .../clk_wiz_0_synth_1/.vivado.begin.rst | 5 + .../clk_wiz_0_synth_1/.vivado.end.rst | 0 .../clk_wiz_0_synth_1/ISEWrap.js | 270 ++ .../clk_wiz_0_synth_1/ISEWrap.sh | 85 + .../__synthesis_is_complete__ | 0 .../clk_wiz_0_synth_1/clk_wiz_0.dcp | Bin 0 -> 13383 bytes .../clk_wiz_0_synth_1/clk_wiz_0.tcl | 234 ++ .../clk_wiz_0_synth_1/clk_wiz_0.vds | 272 ++ .../clk_wiz_0_utilization_synth.pb | Bin 0 -> 276 bytes .../clk_wiz_0_utilization_synth.rpt | 176 + .../clk_wiz_0_synth_1/dont_touch.xdc | 32 + .../clk_wiz_0_synth_1/gen_run.xml | 50 + proj/AudioProc.runs/clk_wiz_0_synth_1/htr.txt | 10 + .../clk_wiz_0_synth_1/project.wdf | 32 + .../clk_wiz_0_synth_1/rundef.js | 41 + .../clk_wiz_0_synth_1/runme.bat | 12 + .../clk_wiz_0_synth_1/runme.log | 262 ++ .../AudioProc.runs/clk_wiz_0_synth_1/runme.sh | 40 + .../clk_wiz_0_synth_1/vivado.jou | 24 + .../clk_wiz_0_synth_1/vivado.pb | Bin 0 -> 28572 bytes .../AudioProc.sim/sim_1/behav/xsim/compile.sh | 28 + .../sim_1/behav/xsim/elaborate.log | 21 + .../sim_1/behav/xsim/elaborate.sh | 22 + proj/AudioProc.sim/sim_1/behav/xsim/glbl.v | 84 + .../sim_1/behav/xsim/simulate.log | 1 + .../sim_1/behav/xsim/simulate.sh | 22 + .../sim_1/behav/xsim/tb_firUnit.tcl | 11 + .../sim_1/behav/xsim/tb_firUnit_behav.wdb | Bin 0 -> 53384 bytes .../sim_1/behav/xsim/tb_firUnit_vhdl.prj | 9 + .../sim_1/behav/xsim/tb_firUnit_vlog.prj | 7 + proj/AudioProc.sim/sim_1/behav/xsim/xelab.pb | Bin 0 -> 2199 bytes .../tb_firUnit_behav/Compile_Options.txt | 1 + .../tb_firUnit_behav/TempBreakPointFile.txt | 1 + .../tb_firUnit_behav/obj/xsim_0.lnx64.o | Bin 0 -> 25536 bytes .../xsim.dir/tb_firUnit_behav/obj/xsim_1.c | 142 + .../tb_firUnit_behav/obj/xsim_1.lnx64.o | Bin 0 -> 6392 bytes .../xsim/xsim.dir/tb_firUnit_behav/xsim.dbg | Bin 0 -> 15928 bytes .../xsim/xsim.dir/tb_firUnit_behav/xsim.mem | Bin 0 -> 4535 bytes .../xsim/xsim.dir/tb_firUnit_behav/xsim.reloc | Bin 0 -> 2004 bytes .../xsim/xsim.dir/tb_firUnit_behav/xsim.rlx | 12 + .../xsim/xsim.dir/tb_firUnit_behav/xsim.rtti | Bin 0 -> 753 bytes .../xsim.dir/tb_firUnit_behav/xsim.svtype | Bin 0 -> 47 bytes .../xsim/xsim.dir/tb_firUnit_behav/xsim.type | Bin 0 -> 7048 bytes .../xsim/xsim.dir/tb_firUnit_behav/xsim.xdbg | Bin 0 -> 13064 bytes .../tb_firUnit_behav/xsimSettings.ini | 50 + .../xsim.dir/tb_firUnit_behav/xsimcrash.log | 0 .../xsim/xsim.dir/tb_firUnit_behav/xsimk | Bin 0 -> 32824 bytes .../xsim.dir/tb_firUnit_behav/xsimkernel.log | 7 + .../xsim.dir/xil_defaultlib/controlunit.vdb | Bin 0 -> 8400 bytes .../xsim/xsim.dir/xil_defaultlib/firunit.vdb | Bin 0 -> 10393 bytes .../xsim/xsim.dir/xil_defaultlib/glbl.sdb | Bin 0 -> 5679 bytes .../xsim.dir/xil_defaultlib/operativeunit.vdb | Bin 0 -> 14228 bytes .../xsim.dir/xil_defaultlib/tb_firunit.vdb | Bin 0 -> 7470 bytes .../xil_defaultlib/xil_defaultlib.rlx | 9 + proj/AudioProc.sim/sim_1/behav/xsim/xsim.ini | 490 +++ .../sim_1/behav/xsim/xsim.ini.bak | 490 +++ proj/AudioProc.sim/sim_1/behav/xsim/xvhdl.log | 6 + proj/AudioProc.sim/sim_1/behav/xsim/xvhdl.pb | Bin 0 -> 859 bytes proj/AudioProc.sim/sim_1/behav/xsim/xvlog.log | 0 proj/AudioProc.sim/sim_1/behav/xsim/xvlog.pb | 4 + proj/AudioProc.xpr | 348 ++ proj/ip_upgrade.log | 27 + proj/tb_firUnit_behav.wcfg | 95 + proj/vivado.jou | 83 + proj/vivado.log | 1724 +++++++++ src/hdl/controlUnit.vhd | 82 +- src/hdl/operativeUnit.vhd | 50 +- src/ip/clk_wiz_0/clk_wiz_0.dcp | Bin 12528 -> 13383 bytes src/ip/clk_wiz_0/clk_wiz_0.v | 52 +- src/ip/clk_wiz_0/clk_wiz_0.vho | 49 +- src/ip/clk_wiz_0/clk_wiz_0.xci | 1253 +++--- src/ip/clk_wiz_0/clk_wiz_0.xdc | 34 +- src/ip/clk_wiz_0/clk_wiz_0.xml | 3448 +++++++++-------- src/ip/clk_wiz_0/clk_wiz_0_clk_wiz.v | 65 +- src/ip/clk_wiz_0/clk_wiz_0_ooc.xdc | 31 +- src/ip/clk_wiz_0/clk_wiz_0_sim_netlist.v | 51 +- src/ip/clk_wiz_0/clk_wiz_0_sim_netlist.vhdl | 32 +- src/ip/clk_wiz_0/clk_wiz_0_stub.v | 31 +- src/ip/clk_wiz_0/clk_wiz_0_stub.vhdl | 18 +- .../clk_wiz_0/doc/clk_wiz_v5_2_changelog.txt | 115 - .../clk_wiz_0/doc/clk_wiz_v6_0_changelog.txt | 323 ++ src/ip/clk_wiz_0/mmcm_pll_drp_func_7s_mmcm.vh | 680 ++++ src/ip/clk_wiz_0/mmcm_pll_drp_func_7s_pll.vh | 542 +++ src/ip/clk_wiz_0/mmcm_pll_drp_func_us_mmcm.vh | 680 ++++ src/ip/clk_wiz_0/mmcm_pll_drp_func_us_pll.vh | 555 +++ .../mmcm_pll_drp_func_us_plus_mmcm.vh | 886 +++++ .../mmcm_pll_drp_func_us_plus_pll.vh | 561 +++ vivado.jou | 25 + vivado.log | 97 + 164 files changed, 21073 insertions(+), 2376 deletions(-) create mode 100644 AudioProc.xpr create mode 100644 docs/img/FSM.drawio.png delete mode 100644 docs/img/FSM.png create mode 100644 proj/AudioProc.cache/ip/2024.1/0/e/0edd54b7fee8338b/0edd54b7fee8338b.xci create mode 100644 proj/AudioProc.cache/ip/2024.1/0/e/0edd54b7fee8338b/clk_wiz_0.dcp create mode 100755 proj/AudioProc.cache/ip/2024.1/0/e/0edd54b7fee8338b/clk_wiz_0_sim_netlist.v create mode 100755 proj/AudioProc.cache/ip/2024.1/0/e/0edd54b7fee8338b/clk_wiz_0_sim_netlist.vhdl create mode 100755 proj/AudioProc.cache/ip/2024.1/0/e/0edd54b7fee8338b/clk_wiz_0_stub.v create mode 100755 proj/AudioProc.cache/ip/2024.1/0/e/0edd54b7fee8338b/clk_wiz_0_stub.vhdl create mode 100644 proj/AudioProc.cache/sim/ssm.db create mode 100644 proj/AudioProc.cache/wt/project.wpc create mode 100644 proj/AudioProc.cache/wt/synthesis.wdf create mode 100644 proj/AudioProc.cache/wt/xsim.wdf create mode 100644 proj/AudioProc.hw/AudioProc.lpr create mode 100644 proj/AudioProc.ip_user_files/README.txt create mode 100755 proj/AudioProc.ip_user_files/ip/clk_wiz_0/clk_wiz_0.vho create mode 100644 proj/AudioProc.ip_user_files/ip/clk_wiz_0/clk_wiz_0_stub.v create mode 100644 proj/AudioProc.ip_user_files/ip/clk_wiz_0/clk_wiz_0_stub.vhdl create mode 100755 proj/AudioProc.ip_user_files/ipstatic/mmcm_pll_drp_func_7s_mmcm.vh create mode 100755 proj/AudioProc.ip_user_files/ipstatic/mmcm_pll_drp_func_7s_pll.vh create mode 100755 proj/AudioProc.ip_user_files/ipstatic/mmcm_pll_drp_func_us_mmcm.vh create mode 100755 proj/AudioProc.ip_user_files/ipstatic/mmcm_pll_drp_func_us_pll.vh create mode 100755 proj/AudioProc.ip_user_files/ipstatic/mmcm_pll_drp_func_us_plus_mmcm.vh create mode 100755 proj/AudioProc.ip_user_files/ipstatic/mmcm_pll_drp_func_us_plus_pll.vh create mode 100644 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/activehdl/README.txt create mode 100755 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/activehdl/clk_wiz_0.sh create mode 100644 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/activehdl/clk_wiz_0.udo create mode 100644 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/activehdl/compile.do create mode 100644 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/activehdl/file_info.txt create mode 100755 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/activehdl/glbl.v create mode 100644 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/activehdl/simulate.do create mode 100644 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/modelsim/README.txt create mode 100755 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/modelsim/clk_wiz_0.sh create mode 100644 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/modelsim/clk_wiz_0.udo create mode 100644 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/modelsim/compile.do create mode 100644 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/modelsim/file_info.txt create mode 100755 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/modelsim/glbl.v create mode 100644 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/modelsim/simulate.do create mode 100644 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/modelsim/wave.do create mode 100644 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/questa/README.txt create mode 100755 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/questa/clk_wiz_0.sh create mode 100644 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/questa/clk_wiz_0.udo create mode 100644 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/questa/compile.do create mode 100644 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/questa/elaborate.do create mode 100644 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/questa/file_info.txt create mode 100755 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/questa/glbl.v create mode 100644 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/questa/simulate.do create mode 100644 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/questa/wave.do create mode 100644 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/riviera/README.txt create mode 100755 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/riviera/clk_wiz_0.sh create mode 100644 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/riviera/clk_wiz_0.udo create mode 100644 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/riviera/compile.do create mode 100644 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/riviera/file_info.txt create mode 100755 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/riviera/glbl.v create mode 100644 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/riviera/simulate.do create mode 100644 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/vcs/README.txt create mode 100755 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/vcs/clk_wiz_0.sh create mode 100644 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/vcs/file_info.txt create mode 100755 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/vcs/glbl.v create mode 100644 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/vcs/simulate.do create mode 100644 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xcelium/README.txt create mode 100755 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xcelium/clk_wiz_0.sh create mode 100644 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xcelium/file_info.txt create mode 100755 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xcelium/glbl.v create mode 100644 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xcelium/hdl.var create mode 100644 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xcelium/simulate.do create mode 100644 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xsim/README.txt create mode 100755 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xsim/clk_wiz_0.sh create mode 100644 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xsim/cmd.tcl create mode 100644 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xsim/file_info.txt create mode 100755 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xsim/glbl.v create mode 100644 proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xsim/vlog.prj create mode 100644 proj/AudioProc.runs/.jobs/vrs_config_1.xml create mode 100644 proj/AudioProc.runs/clk_wiz_0_synth_1/.Vivado_Synthesis.queue.rst create mode 100644 proj/AudioProc.runs/clk_wiz_0_synth_1/.Xil/clk_wiz_0_propImpl.xdc create mode 100644 proj/AudioProc.runs/clk_wiz_0_synth_1/.vivado.begin.rst create mode 100644 proj/AudioProc.runs/clk_wiz_0_synth_1/.vivado.end.rst create mode 100755 proj/AudioProc.runs/clk_wiz_0_synth_1/ISEWrap.js create mode 100755 proj/AudioProc.runs/clk_wiz_0_synth_1/ISEWrap.sh create mode 100644 proj/AudioProc.runs/clk_wiz_0_synth_1/__synthesis_is_complete__ create mode 100644 proj/AudioProc.runs/clk_wiz_0_synth_1/clk_wiz_0.dcp create mode 100644 proj/AudioProc.runs/clk_wiz_0_synth_1/clk_wiz_0.tcl create mode 100644 proj/AudioProc.runs/clk_wiz_0_synth_1/clk_wiz_0.vds create mode 100644 proj/AudioProc.runs/clk_wiz_0_synth_1/clk_wiz_0_utilization_synth.pb create mode 100644 proj/AudioProc.runs/clk_wiz_0_synth_1/clk_wiz_0_utilization_synth.rpt create mode 100644 proj/AudioProc.runs/clk_wiz_0_synth_1/dont_touch.xdc create mode 100644 proj/AudioProc.runs/clk_wiz_0_synth_1/gen_run.xml create mode 100644 proj/AudioProc.runs/clk_wiz_0_synth_1/htr.txt create mode 100644 proj/AudioProc.runs/clk_wiz_0_synth_1/project.wdf create mode 100644 proj/AudioProc.runs/clk_wiz_0_synth_1/rundef.js create mode 100644 proj/AudioProc.runs/clk_wiz_0_synth_1/runme.bat create mode 100644 proj/AudioProc.runs/clk_wiz_0_synth_1/runme.log create mode 100755 proj/AudioProc.runs/clk_wiz_0_synth_1/runme.sh create mode 100644 proj/AudioProc.runs/clk_wiz_0_synth_1/vivado.jou create mode 100644 proj/AudioProc.runs/clk_wiz_0_synth_1/vivado.pb create mode 100755 proj/AudioProc.sim/sim_1/behav/xsim/compile.sh create mode 100644 proj/AudioProc.sim/sim_1/behav/xsim/elaborate.log create mode 100755 proj/AudioProc.sim/sim_1/behav/xsim/elaborate.sh create mode 100755 proj/AudioProc.sim/sim_1/behav/xsim/glbl.v create mode 100644 proj/AudioProc.sim/sim_1/behav/xsim/simulate.log create mode 100755 proj/AudioProc.sim/sim_1/behav/xsim/simulate.sh create mode 100644 proj/AudioProc.sim/sim_1/behav/xsim/tb_firUnit.tcl create mode 100644 proj/AudioProc.sim/sim_1/behav/xsim/tb_firUnit_behav.wdb create mode 100644 proj/AudioProc.sim/sim_1/behav/xsim/tb_firUnit_vhdl.prj create mode 100644 proj/AudioProc.sim/sim_1/behav/xsim/tb_firUnit_vlog.prj create mode 100644 proj/AudioProc.sim/sim_1/behav/xsim/xelab.pb create mode 100644 proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/Compile_Options.txt create mode 100644 proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/TempBreakPointFile.txt create mode 100644 proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/obj/xsim_0.lnx64.o create mode 100644 proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/obj/xsim_1.c create mode 100644 proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/obj/xsim_1.lnx64.o create mode 100644 proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/xsim.dbg create mode 100644 proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/xsim.mem create mode 100644 proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/xsim.reloc create mode 100644 proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/xsim.rlx create mode 100644 proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/xsim.rtti create mode 100644 proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/xsim.svtype create mode 100644 proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/xsim.type create mode 100644 proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/xsim.xdbg create mode 100644 proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/xsimSettings.ini create mode 100644 proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/xsimcrash.log create mode 100755 proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/xsimk create mode 100644 proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/xsimkernel.log create mode 100644 proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/controlunit.vdb create mode 100644 proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/firunit.vdb create mode 100644 proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/glbl.sdb create mode 100644 proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/operativeunit.vdb create mode 100644 proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/tb_firunit.vdb create mode 100644 proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/xil_defaultlib.rlx create mode 100644 proj/AudioProc.sim/sim_1/behav/xsim/xsim.ini create mode 100644 proj/AudioProc.sim/sim_1/behav/xsim/xsim.ini.bak create mode 100644 proj/AudioProc.sim/sim_1/behav/xsim/xvhdl.log create mode 100644 proj/AudioProc.sim/sim_1/behav/xsim/xvhdl.pb create mode 100644 proj/AudioProc.sim/sim_1/behav/xsim/xvlog.log create mode 100644 proj/AudioProc.sim/sim_1/behav/xsim/xvlog.pb create mode 100644 proj/AudioProc.xpr create mode 100644 proj/ip_upgrade.log create mode 100644 proj/tb_firUnit_behav.wcfg create mode 100644 proj/vivado.jou create mode 100644 proj/vivado.log delete mode 100644 src/ip/clk_wiz_0/doc/clk_wiz_v5_2_changelog.txt create mode 100755 src/ip/clk_wiz_0/doc/clk_wiz_v6_0_changelog.txt create mode 100755 src/ip/clk_wiz_0/mmcm_pll_drp_func_7s_mmcm.vh create mode 100755 src/ip/clk_wiz_0/mmcm_pll_drp_func_7s_pll.vh create mode 100755 src/ip/clk_wiz_0/mmcm_pll_drp_func_us_mmcm.vh create mode 100755 src/ip/clk_wiz_0/mmcm_pll_drp_func_us_pll.vh create mode 100755 src/ip/clk_wiz_0/mmcm_pll_drp_func_us_plus_mmcm.vh create mode 100755 src/ip/clk_wiz_0/mmcm_pll_drp_func_us_plus_pll.vh create mode 100644 vivado.jou create mode 100644 vivado.log diff --git a/AudioProc.xpr b/AudioProc.xpr new file mode 100644 index 0000000..573f8c6 --- /dev/null +++ b/AudioProc.xpr @@ -0,0 +1,218 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Product Version: Vivado v2024.1 (64-bit) --> +<!-- --> +<!-- Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. --> +<!-- Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. --> + +<Project Product="Vivado" Version="7" Minor="67" Path="/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/AudioProc.xpr"> + <DefaultLaunch Dir="$PRUNDIR"/> + <Configuration> + <Option Name="Id" Val="e38929706f6f4a97b2a2b7a6dd753304"/> + <Option Name="Part" Val="xc7a200tsbg484-1"/> + <Option Name="CompiledLibDir" Val="$PCACHEDIR/compile_simlib"/> + <Option Name="CompiledLibDirXSim" Val=""/> + <Option Name="CompiledLibDirModelSim" Val="$PCACHEDIR/compile_simlib/modelsim"/> + <Option Name="CompiledLibDirQuesta" Val="$PCACHEDIR/compile_simlib/questa"/> + <Option Name="CompiledLibDirXcelium" Val="$PCACHEDIR/compile_simlib/xcelium"/> + <Option Name="CompiledLibDirVCS" Val="$PCACHEDIR/compile_simlib/vcs"/> + <Option Name="CompiledLibDirRiviera" Val="$PCACHEDIR/compile_simlib/riviera"/> + <Option Name="CompiledLibDirActivehdl" Val="$PCACHEDIR/compile_simlib/activehdl"/> + <Option Name="SimulatorInstallDirModelSim" Val=""/> + <Option Name="SimulatorInstallDirQuesta" Val=""/> + <Option Name="SimulatorInstallDirXcelium" Val=""/> + <Option Name="SimulatorInstallDirVCS" Val=""/> + <Option Name="SimulatorInstallDirRiviera" Val=""/> + <Option Name="SimulatorInstallDirActiveHdl" Val=""/> + <Option Name="SimulatorGccInstallDirModelSim" Val=""/> + <Option Name="SimulatorGccInstallDirQuesta" Val=""/> + <Option Name="SimulatorGccInstallDirXcelium" Val=""/> + <Option Name="SimulatorGccInstallDirVCS" Val=""/> + <Option Name="SimulatorGccInstallDirRiviera" Val=""/> + <Option Name="SimulatorGccInstallDirActiveHdl" Val=""/> + <Option Name="SimulatorVersionXsim" Val="2024.1"/> + <Option Name="SimulatorVersionModelSim" Val="2023.2"/> + <Option Name="SimulatorVersionQuesta" Val="2023.2"/> + <Option Name="SimulatorVersionXcelium" Val="23.03.002"/> + <Option Name="SimulatorVersionVCS" Val="U-2023.03-1"/> + <Option Name="SimulatorVersionRiviera" Val="2023.04"/> + <Option Name="SimulatorVersionActiveHdl" Val="14.1"/> + <Option Name="SimulatorGccVersionXsim" Val="9.3.0"/> + <Option Name="SimulatorGccVersionModelSim" Val="7.4.0"/> + <Option Name="SimulatorGccVersionQuesta" Val="7.4.0"/> + <Option Name="SimulatorGccVersionXcelium" Val="9.3.0"/> + <Option Name="SimulatorGccVersionVCS" Val="9.2.0"/> + <Option Name="SimulatorGccVersionRiviera" Val="9.3.0"/> + <Option Name="SimulatorGccVersionActiveHdl" Val="9.3.0"/> + <Option Name="TargetLanguage" Val="VHDL"/> + <Option Name="BoardPart" Val=""/> + <Option Name="ActiveSimSet" Val="sim_1"/> + <Option Name="DefaultLib" Val="xil_defaultlib"/> + <Option Name="ProjectType" Val="Default"/> + <Option Name="IPRepoPath" Val="$PPRDIR/../repo"/> + <Option Name="IPOutputRepo" Val="$PCACHEDIR/ip"/> + <Option Name="IPDefaultOutputPath" Val="$PGENDIR/sources_1"/> + <Option Name="IPCachePermission" Val="read"/> + <Option Name="IPCachePermission" Val="write"/> + <Option Name="EnableCoreContainer" Val="FALSE"/> + <Option Name="EnableResourceEstimation" Val="FALSE"/> + <Option Name="SimCompileState" Val="TRUE"/> + <Option Name="CreateRefXciForCoreContainers" Val="FALSE"/> + <Option Name="IPUserFilesDir" Val="$PIPUSERFILESDIR"/> + <Option Name="IPStaticSourceDir" Val="$PIPUSERFILESDIR/ipstatic"/> + <Option Name="EnableBDX" Val="FALSE"/> + <Option Name="WTXSimLaunchSim" Val="0"/> + <Option Name="WTModelSimLaunchSim" Val="0"/> + <Option Name="WTQuestaLaunchSim" Val="0"/> + <Option Name="WTIesLaunchSim" Val="0"/> + <Option Name="WTVcsLaunchSim" Val="0"/> + <Option Name="WTRivieraLaunchSim" Val="0"/> + <Option Name="WTActivehdlLaunchSim" Val="0"/> + <Option Name="WTXSimExportSim" Val="0"/> + <Option Name="WTModelSimExportSim" Val="0"/> + <Option Name="WTQuestaExportSim" Val="0"/> + <Option Name="WTIesExportSim" Val="0"/> + <Option Name="WTVcsExportSim" Val="0"/> + <Option Name="WTRivieraExportSim" Val="0"/> + <Option Name="WTActivehdlExportSim" Val="0"/> + <Option Name="GenerateIPUpgradeLog" Val="TRUE"/> + <Option Name="XSimRadix" Val="hex"/> + <Option Name="XSimTimeUnit" Val="ns"/> + <Option Name="XSimArrayDisplayLimit" Val="1024"/> + <Option Name="XSimTraceLimit" Val="65536"/> + <Option Name="SimTypes" Val="rtl"/> + <Option Name="SimTypes" Val="bfm"/> + <Option Name="SimTypes" Val="tlm"/> + <Option Name="SimTypes" Val="tlm_dpi"/> + <Option Name="MEMEnableMemoryMapGeneration" Val="TRUE"/> + <Option Name="DcpsUptoDate" Val="TRUE"/> + <Option Name="ClassicSocBoot" Val="FALSE"/> + <Option Name="LocalIPRepoLeafDirName" Val="ip_repo"/> + </Configuration> + <FileSets Version="1" Minor="32"> + <FileSet Name="sources_1" Type="DesignSrcs" RelSrcDir="$PSRCDIR/sources_1" RelGenDir="$PGENDIR/sources_1"> + <Filter Type="Srcs"/> + <Config> + <Option Name="DesignMode" Val="RTL"/> + <Option Name="TopAutoSet" Val="TRUE"/> + </Config> + </FileSet> + <FileSet Name="constrs_1" Type="Constrs" RelSrcDir="$PSRCDIR/constrs_1" RelGenDir="$PGENDIR/constrs_1"> + <Filter Type="Constrs"/> + <Config> + <Option Name="ConstrsType" Val="XDC"/> + </Config> + </FileSet> + <FileSet Name="sim_1" Type="SimulationSrcs" RelSrcDir="$PSRCDIR/sim_1" RelGenDir="$PGENDIR/sim_1"> + <Config> + <Option Name="DesignMode" Val="RTL"/> + <Option Name="TopAutoSet" Val="TRUE"/> + <Option Name="TransportPathDelay" Val="0"/> + <Option Name="TransportIntDelay" Val="0"/> + <Option Name="SelectedSimModel" Val="rtl"/> + <Option Name="PamDesignTestbench" Val=""/> + <Option Name="PamDutBypassFile" Val="xil_dut_bypass"/> + <Option Name="PamSignalDriverFile" Val="xil_bypass_driver"/> + <Option Name="PamPseudoTop" Val="pseudo_tb"/> + <Option Name="SrcSet" Val="sources_1"/> + </Config> + </FileSet> + <FileSet Name="utils_1" Type="Utils" RelSrcDir="$PSRCDIR/utils_1" RelGenDir="$PGENDIR/utils_1"> + <Filter Type="Utils"/> + <Config> + <Option Name="TopAutoSet" Val="TRUE"/> + </Config> + </FileSet> + </FileSets> + <Simulators> + <Simulator Name="XSim"> + <Option Name="Description" Val="Vivado Simulator"/> + <Option Name="CompiledLib" Val="0"/> + </Simulator> + <Simulator Name="ModelSim"> + <Option Name="Description" Val="ModelSim Simulator"/> + </Simulator> + <Simulator Name="Questa"> + <Option Name="Description" Val="Questa Advanced Simulator"/> + </Simulator> + <Simulator Name="Xcelium"> + <Option Name="Description" Val="Xcelium Parallel Simulator"/> + </Simulator> + <Simulator Name="VCS"> + <Option Name="Description" Val="Verilog Compiler Simulator (VCS)"/> + </Simulator> + <Simulator Name="Riviera"> + <Option Name="Description" Val="Riviera-PRO Simulator"/> + </Simulator> + </Simulators> + <Runs Version="1" Minor="22"> + <Run Id="synth_1" Type="Ft3:Synth" SrcSet="sources_1" Part="xc7a200tsbg484-1" ConstrsSet="constrs_1" Description="Higher performance designs, resource sharing is turned off, the global fanout guide is set to a lower number, FSM extraction forced to one-hot, LUT combining is disabled, equivalent registers are preserved, SRL are inferred with a larger threshold" AutoIncrementalCheckpoint="true" WriteIncrSynthDcp="false" State="current" IncludeInArchive="true" IsChild="false" AutoIncrementalDir="$PSRCDIR/utils_1/imports/synth_1" AutoRQSDir="$PSRCDIR/utils_1/imports/synth_1" ParallelReportGen="true"> + <Strategy Version="1" Minor="2"> + <StratHandle Name="Flow_PerfOptimized_High" Flow="Vivado Synthesis 2014"> + <Desc>Higher performance designs, resource sharing is turned off, the global fanout guide is set to a lower number, FSM extraction forced to one-hot, LUT combining is disabled, equivalent registers are preserved, SRL are inferred with a larger threshold</Desc> + </StratHandle> + <Step Id="synth_design"> + <Option Id="FsmExtraction">1</Option> + <Option Id="KeepEquivalentRegisters">1</Option> + <Option Id="NoCombineLuts">1</Option> + <Option Id="RepFanoutThreshold">400</Option> + <Option Id="ResourceSharing">2</Option> + <Option Id="ShregMinSize">5</Option> + </Step> + </Strategy> + <ReportStrategy Name="Vivado Synthesis Default Reports" Flow="Vivado Synthesis 2017"/> + <Report Name="ROUTE_DESIGN.REPORT_METHODOLOGY" Enabled="1"/> + <RQSFiles/> + </Run> + <Run Id="impl_1" Type="Ft2:EntireDesign" Part="xc7a200tsbg484-1" ConstrsSet="constrs_1" Description="Vivado Implementation Defaults" AutoIncrementalCheckpoint="false" WriteIncrSynthDcp="false" State="current" SynthRun="synth_1" IncludeInArchive="true" IsChild="false" GenFullBitstream="true" AutoIncrementalDir="$PSRCDIR/utils_1/imports/impl_1" AutoRQSDir="$PSRCDIR/utils_1/imports/impl_1" ParallelReportGen="true"> + <Strategy Version="1" Minor="2"> + <StratHandle Name="Vivado Implementation Defaults" Flow="Vivado Implementation 2014"> + <Desc>Vivado Implementation Defaults</Desc> + </StratHandle> + <Step Id="init_design"/> + <Step Id="opt_design"/> + <Step Id="power_opt_design"/> + <Step Id="place_design"/> + <Step Id="post_place_power_opt_design"/> + <Step Id="phys_opt_design"/> + <Step Id="route_design"/> + <Step Id="post_route_phys_opt_design"/> + <Step Id="write_bitstream"> + <Option Id="BinFile">1</Option> + </Step> + </Strategy> + <ReportStrategy Name="Vivado Implementation Default Reports" Flow="Vivado Implementation 2017"/> + <Report Name="ROUTE_DESIGN.REPORT_METHODOLOGY" Enabled="1"/> + <RQSFiles/> + </Run> + </Runs> + <Board/> + <DashboardSummary Version="1" Minor="0"> + <Dashboards> + <Dashboard Name="default_dashboard"> + <Gadgets> + <Gadget Name="drc_1" Type="drc" Version="1" Row="2" Column="0"> + <GadgetParam Name="REPORTS" Type="string_list" Value="impl_1#impl_1_route_report_drc_0 "/> + </Gadget> + <Gadget Name="methodology_1" Type="methodology" Version="1" Row="2" Column="1"> + <GadgetParam Name="REPORTS" Type="string_list" Value="impl_1#impl_1_route_report_methodology_0 "/> + </Gadget> + <Gadget Name="power_1" Type="power" Version="1" Row="1" Column="0"> + <GadgetParam Name="REPORTS" Type="string_list" Value="impl_1#impl_1_route_report_power_0 "/> + </Gadget> + <Gadget Name="timing_1" Type="timing" Version="1" Row="0" Column="1"> + <GadgetParam Name="REPORTS" Type="string_list" Value="impl_1#impl_1_route_report_timing_summary_0 "/> + </Gadget> + <Gadget Name="utilization_1" Type="utilization" Version="1" Row="0" Column="0"> + <GadgetParam Name="REPORTS" Type="string_list" Value="synth_1#synth_1_synth_report_utilization_0 "/> + <GadgetParam Name="RUN.STEP" Type="string" Value="synth_design"/> + <GadgetParam Name="RUN.TYPE" Type="string" Value="synthesis"/> + </Gadget> + <Gadget Name="utilization_2" Type="utilization" Version="1" Row="1" Column="1"> + <GadgetParam Name="REPORTS" Type="string_list" Value="impl_1#impl_1_place_report_utilization_0 "/> + </Gadget> + </Gadgets> + </Dashboard> + <CurrentDashboard>default_dashboard</CurrentDashboard> + </Dashboards> + </DashboardSummary> +</Project> diff --git a/docs/img/FSM.drawio.png b/docs/img/FSM.drawio.png new file mode 100644 index 0000000000000000000000000000000000000000..56b154b538b24e9cbea2e6fcacb52b656a2f1b91 GIT binary patch literal 129377 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 Vr_wyijDdlH!PC{xWt~$(697u_d(r>^ literal 0 HcmV?d00001 diff --git a/docs/img/FSM.png b/docs/img/FSM.png deleted file mode 100644 index 7f6db881fff5cdfb9351c0348dfec49ff082516d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 117251 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 diff --git a/proj/AudioProc.cache/ip/2024.1/0/e/0edd54b7fee8338b/0edd54b7fee8338b.xci b/proj/AudioProc.cache/ip/2024.1/0/e/0edd54b7fee8338b/0edd54b7fee8338b.xci new file mode 100644 index 0000000..647b9d9 --- /dev/null +++ b/proj/AudioProc.cache/ip/2024.1/0/e/0edd54b7fee8338b/0edd54b7fee8338b.xci @@ -0,0 +1,298 @@ +<?xml version="1.0" encoding="UTF-8"?> +<spirit:design xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <spirit:vendor>xilinx.com</spirit:vendor> + <spirit:library>ipcache</spirit:library> + <spirit:name>0edd54b7fee8338b</spirit:name> + <spirit:version>0</spirit:version> + <spirit:componentInstances> + <spirit:componentInstance> + <spirit:instanceName>clk_wiz_0</spirit:instanceName> + <spirit:componentRef spirit:vendor="xilinx.com" spirit:library="ip" spirit:name="clk_wiz" spirit:version="6.0"/> + <spirit:configurableElementValues> + <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.CLOCK_CLK_IN1.FREQ_HZ">100000000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.CLOCK_CLK_OUT1.FREQ_HZ">100000000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.CLOCK_CLK_OUT2.FREQ_HZ">100000000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.CLOCK_CLK_OUT3.FREQ_HZ">100000000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.CLOCK_CLK_OUT4.FREQ_HZ">100000000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.AUTO_PRIMITIVE">MMCM</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.AXI_DRP">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CALC_DONE">empty</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CDDCDONE_PORT">cddcdone</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CDDCREQ_PORT">cddcreq</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKFB_IN_N_PORT">clkfb_in_n</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKFB_IN_PORT">clkfb_in</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKFB_IN_P_PORT">clkfb_in_p</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKFB_IN_SIGNALING">SINGLE</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKFB_OUT_N_PORT">clkfb_out_n</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKFB_OUT_PORT">clkfb_out</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKFB_OUT_P_PORT">clkfb_out_p</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKFB_STOPPED_PORT">clkfb_stopped</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKIN1_JITTER_PS">100.0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKIN1_UI_JITTER">0.010</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKIN2_JITTER_PS">100.0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKIN2_UI_JITTER">0.010</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_DRIVES">BUFG</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_JITTER">151.366</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_MATCHED_ROUTING">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_PHASE_ERROR">132.063</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_REQUESTED_DUTY_CYCLE">50.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_REQUESTED_OUT_FREQ">100.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_REQUESTED_PHASE">0.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_SEQUENCE_NUMBER">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_USED">true</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_DRIVES">BUFG</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_JITTER">132.221</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_MATCHED_ROUTING">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_PHASE_ERROR">132.063</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_REQUESTED_DUTY_CYCLE">50.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_REQUESTED_OUT_FREQ">200.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_REQUESTED_PHASE">0.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_SEQUENCE_NUMBER">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_USED">true</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_DRIVES">BUFG</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_JITTER">231.952</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_MATCHED_ROUTING">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_PHASE_ERROR">132.063</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_REQUESTED_DUTY_CYCLE">50.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_REQUESTED_OUT_FREQ">12.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_REQUESTED_PHASE">0.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_SEQUENCE_NUMBER">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_USED">true</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT4_DRIVES">BUFG</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT4_JITTER">174.353</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT4_MATCHED_ROUTING">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT4_PHASE_ERROR">132.063</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT4_REQUESTED_DUTY_CYCLE">50.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT4_REQUESTED_OUT_FREQ">50.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT4_REQUESTED_PHASE">0.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT4_SEQUENCE_NUMBER">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT4_USED">true</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT5_DRIVES">BUFG</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT5_JITTER">0.0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT5_MATCHED_ROUTING">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT5_PHASE_ERROR">0.0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT5_REQUESTED_DUTY_CYCLE">50.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT5_REQUESTED_OUT_FREQ">100.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT5_REQUESTED_PHASE">0.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT5_SEQUENCE_NUMBER">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT5_USED">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT6_DRIVES">BUFG</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT6_JITTER">0.0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT6_MATCHED_ROUTING">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT6_PHASE_ERROR">0.0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT6_REQUESTED_DUTY_CYCLE">50.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT6_REQUESTED_OUT_FREQ">100.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT6_REQUESTED_PHASE">0.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT6_SEQUENCE_NUMBER">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT6_USED">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_DRIVES">BUFG</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_JITTER">0.0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_MATCHED_ROUTING">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_PHASE_ERROR">0.0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_REQUESTED_DUTY_CYCLE">50.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_REQUESTED_OUT_FREQ">100.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_REQUESTED_PHASE">0.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_SEQUENCE_NUMBER">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_USED">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUTPHY_REQUESTED_FREQ">600.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_IN1_BOARD_INTERFACE">Custom</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_IN2_BOARD_INTERFACE">Custom</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_IN_SEL_PORT">clk_in_sel</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT1_PORT">clk_out1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT1_USE_FINE_PS_GUI">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT2_PORT">clk_out2</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT2_USE_FINE_PS_GUI">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT3_PORT">clk_out3</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT3_USE_FINE_PS_GUI">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT4_PORT">clk_out4</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT4_USE_FINE_PS_GUI">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT5_PORT">clk_out5</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT5_USE_FINE_PS_GUI">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT6_PORT">clk_out6</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT6_USE_FINE_PS_GUI">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT7_PORT">clk_out7</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT7_USE_FINE_PS_GUI">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_VALID_PORT">CLK_VALID</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLOCK_MGR_TYPE">auto</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Component_Name">clk_wiz_0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DADDR_PORT">daddr</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DCLK_PORT">dclk</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DEN_PORT">den</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DIFF_CLK_IN1_BOARD_INTERFACE">Custom</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DIFF_CLK_IN2_BOARD_INTERFACE">Custom</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DIN_PORT">din</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DOUT_PORT">dout</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DRDY_PORT">drdy</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DWE_PORT">dwe</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ENABLE_CDDC">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ENABLE_CLKOUTPHY">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ENABLE_CLOCK_MONITOR">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ENABLE_USER_CLOCK0">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ENABLE_USER_CLOCK1">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ENABLE_USER_CLOCK2">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ENABLE_USER_CLOCK3">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Enable_PLL0">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Enable_PLL1">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.FEEDBACK_SOURCE">FDBK_AUTO</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INPUT_CLK_STOPPED_PORT">input_clk_stopped</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INPUT_MODE">frequency</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INTERFACE_SELECTION">Enable_AXI</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.IN_FREQ_UNITS">Units_MHz</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.IN_JITTER_UNITS">Units_UI</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.JITTER_OPTIONS">UI</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.JITTER_SEL">No_Jitter</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.LOCKED_PORT">locked</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_BANDWIDTH">OPTIMIZED</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKFBOUT_MULT_F">6.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKFBOUT_PHASE">0.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKFBOUT_USE_FINE_PS">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKIN1_PERIOD">10.0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKIN2_PERIOD">10.0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT0_DIVIDE_F">6.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT0_DUTY_CYCLE">0.500</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT0_PHASE">0.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT0_USE_FINE_PS">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT1_DIVIDE">3</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT1_DUTY_CYCLE">0.500</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT1_PHASE">0.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT1_USE_FINE_PS">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT2_DIVIDE">50</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT2_DUTY_CYCLE">0.500</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT2_PHASE">0.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT2_USE_FINE_PS">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT3_DIVIDE">12</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT3_DUTY_CYCLE">0.500</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT3_PHASE">0.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT3_USE_FINE_PS">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT4_CASCADE">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT4_DIVIDE">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT4_DUTY_CYCLE">0.500</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT4_PHASE">0.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT4_USE_FINE_PS">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT5_DIVIDE">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT5_DUTY_CYCLE">0.500</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT5_PHASE">0.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT5_USE_FINE_PS">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT6_DIVIDE">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT6_DUTY_CYCLE">0.500</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT6_PHASE">0.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT6_USE_FINE_PS">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLOCK_HOLD">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_COMPENSATION">ZHOLD</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_DIVCLK_DIVIDE">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_NOTES">None</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_REF_JITTER1">0.010</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_REF_JITTER2">0.010</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_STARTUP_WAIT">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.NUM_OUT_CLKS">4</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.OPTIMIZE_CLOCKING_STRUCTURE_EN">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.OVERRIDE_MMCM">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.OVERRIDE_PLL">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PHASESHIFT_MODE">WAVEFORM</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PHASE_DUTY_CONFIG">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLATFORM">UNKNOWN</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_BANDWIDTH">OPTIMIZED</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKFBOUT_MULT">4</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKFBOUT_PHASE">0.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKIN_PERIOD">10.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT0_DIVIDE">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT0_DUTY_CYCLE">0.500</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT0_PHASE">0.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT1_DIVIDE">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT1_DUTY_CYCLE">0.500</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT1_PHASE">0.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT2_DIVIDE">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT2_DUTY_CYCLE">0.500</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT2_PHASE">0.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT3_DIVIDE">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT3_DUTY_CYCLE">0.500</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT3_PHASE">0.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT4_DIVIDE">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT4_DUTY_CYCLE">0.500</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT4_PHASE">0.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT5_DIVIDE">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT5_DUTY_CYCLE">0.500</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT5_PHASE">0.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLK_FEEDBACK">CLKFBOUT</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_COMPENSATION">SYSTEM_SYNCHRONOUS</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_DIVCLK_DIVIDE">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_NOTES">None</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_REF_JITTER">0.010</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.POWER_DOWN_PORT">power_down</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PRECISION">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PRIMARY_PORT">clk_in1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PRIMITIVE">MMCM</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PRIMTYPE_SEL">mmcm_adv</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PRIM_IN_FREQ">100.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PRIM_IN_JITTER">0.010</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PRIM_IN_TIMEPERIOD">10.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PRIM_SOURCE">Single_ended_clock_capable_pin</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PSCLK_PORT">psclk</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PSDONE_PORT">psdone</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PSEN_PORT">psen</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PSINCDEC_PORT">psincdec</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.REF_CLK_FREQ">100.0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.RELATIVE_INCLK">REL_PRIMARY</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.RESET_BOARD_INTERFACE">Custom</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.RESET_PORT">reset</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.RESET_TYPE">ACTIVE_HIGH</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.SECONDARY_IN_FREQ">100.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.SECONDARY_IN_JITTER">0.010</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.SECONDARY_IN_TIMEPERIOD">10.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.SECONDARY_PORT">clk_in2</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.SECONDARY_SOURCE">Single_ended_clock_capable_pin</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.SS_MODE">CENTER_HIGH</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.SS_MOD_FREQ">250</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.SS_MOD_TIME">0.004</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.STATUS_PORT">STATUS</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.SUMMARY_STRINGS">empty</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USER_CLK_FREQ0">100.0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USER_CLK_FREQ1">100.0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USER_CLK_FREQ2">100.0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USER_CLK_FREQ3">100.0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_BOARD_FLOW">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_CLKFB_STOPPED">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_CLK_VALID">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_CLOCK_SEQUENCING">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_DYN_PHASE_SHIFT">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_DYN_RECONFIG">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_FREEZE">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_FREQ_SYNTH">true</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_INCLK_STOPPED">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_INCLK_SWITCHOVER">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_LOCKED">true</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_MAX_I_JITTER">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_MIN_O_JITTER">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_MIN_POWER">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_PHASE_ALIGNMENT">true</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_POWER_DOWN">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_RESET">true</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_SAFE_CLOCK_STARTUP">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_SPREAD_SPECTRUM">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_STATUS">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.ARCHITECTURE">artix7</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.DEVICE">xc7a200t</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.PACKAGE">sbg484</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.PREFHDL">VHDL</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.SILICON_REVISION"/> + <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.SPEEDGRADE">-1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.STATIC_POWER"/> + <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.TEMPERATURE_GRADE"/> + <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.IPCACHEELABORATESCRC">e6a05ff8</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.IPCACHEID">0edd54b7fee8338b</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.IPCACHESPECIALDATA">clk_wiz_0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.IPCACHESYNTHCL">$Change: 5073576 $</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.IPCACHESYNTHCRC">401ad827</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.IPCACHESYNTHRUNTIME">66</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.IPCONTEXT">IP_Unknown</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.IPREVISION">14</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.MANAGED">TRUE</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.OUTPUTDIR">.</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.SELECTEDSIMMODEL"/> + <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.SHAREDDIR">.</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.SWVERSION">2024.1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.SYNTHESISFLOW">GLOBAL</spirit:configurableElementValue> + </spirit:configurableElementValues> + </spirit:componentInstance> + </spirit:componentInstances> +</spirit:design> diff --git a/proj/AudioProc.cache/ip/2024.1/0/e/0edd54b7fee8338b/clk_wiz_0.dcp b/proj/AudioProc.cache/ip/2024.1/0/e/0edd54b7fee8338b/clk_wiz_0.dcp new file mode 100644 index 0000000000000000000000000000000000000000..b109f08ea01cc4d8f3863598892880bc45ec6a41 GIT binary patch literal 13273 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 NLye77%H0eNYynwq;-~-s literal 0 HcmV?d00001 diff --git a/proj/AudioProc.cache/ip/2024.1/0/e/0edd54b7fee8338b/clk_wiz_0_sim_netlist.v b/proj/AudioProc.cache/ip/2024.1/0/e/0edd54b7fee8338b/clk_wiz_0_sim_netlist.v new file mode 100755 index 0000000..2a0c546 --- /dev/null +++ b/proj/AudioProc.cache/ip/2024.1/0/e/0edd54b7fee8338b/clk_wiz_0_sim_netlist.v @@ -0,0 +1,291 @@ +// Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. +// Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. +// -------------------------------------------------------------------------------- +// Tool Version: Vivado v.2024.1 (lin64) Build 5076996 Wed May 22 18:36:09 MDT 2024 +// Date : Wed Feb 26 11:54:27 2025 +// Host : fl-tp-br-604 running 64-bit Ubuntu 24.04.1 LTS +// Command : write_verilog -force -mode funcsim -rename_top decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix -prefix +// decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix_ clk_wiz_0_sim_netlist.v +// Design : clk_wiz_0 +// Purpose : This verilog netlist is a functional simulation representation of the design and should not be modified +// or synthesized. This netlist cannot be used for SDF annotated simulation. +// Device : xc7a200tsbg484-1 +// -------------------------------------------------------------------------------- +`timescale 1 ps / 1 ps + +(* NotValidForBitStream *) +module decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix + (clk_out1, + clk_out2, + clk_out3, + clk_out4, + reset, + locked, + clk_in1); + output clk_out1; + output clk_out2; + output clk_out3; + output clk_out4; + input reset; + output locked; + input clk_in1; + + (* IBUF_LOW_PWR *) wire clk_in1; + wire clk_out1; + wire clk_out2; + wire clk_out3; + wire clk_out4; + wire locked; + wire reset; + + decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix_clk_wiz_0_clk_wiz inst + (.clk_in1(clk_in1), + .clk_out1(clk_out1), + .clk_out2(clk_out2), + .clk_out3(clk_out3), + .clk_out4(clk_out4), + .locked(locked), + .reset(reset)); +endmodule + +module decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix_clk_wiz_0_clk_wiz + (clk_out1, + clk_out2, + clk_out3, + clk_out4, + reset, + locked, + clk_in1); + output clk_out1; + output clk_out2; + output clk_out3; + output clk_out4; + input reset; + output locked; + input clk_in1; + + wire clk_in1; + wire clk_in1_clk_wiz_0; + wire clk_out1; + wire clk_out1_clk_wiz_0; + wire clk_out2; + wire clk_out2_clk_wiz_0; + wire clk_out3; + wire clk_out3_clk_wiz_0; + wire clk_out4; + wire clk_out4_clk_wiz_0; + wire clkfbout_buf_clk_wiz_0; + wire clkfbout_clk_wiz_0; + wire locked; + wire reset; + wire NLW_mmcm_adv_inst_CLKFBOUTB_UNCONNECTED; + wire NLW_mmcm_adv_inst_CLKFBSTOPPED_UNCONNECTED; + wire NLW_mmcm_adv_inst_CLKINSTOPPED_UNCONNECTED; + wire NLW_mmcm_adv_inst_CLKOUT0B_UNCONNECTED; + wire NLW_mmcm_adv_inst_CLKOUT1B_UNCONNECTED; + wire NLW_mmcm_adv_inst_CLKOUT2B_UNCONNECTED; + wire NLW_mmcm_adv_inst_CLKOUT3B_UNCONNECTED; + wire NLW_mmcm_adv_inst_CLKOUT4_UNCONNECTED; + wire NLW_mmcm_adv_inst_CLKOUT5_UNCONNECTED; + wire NLW_mmcm_adv_inst_CLKOUT6_UNCONNECTED; + wire NLW_mmcm_adv_inst_DRDY_UNCONNECTED; + wire NLW_mmcm_adv_inst_PSDONE_UNCONNECTED; + wire [15:0]NLW_mmcm_adv_inst_DO_UNCONNECTED; + + (* BOX_TYPE = "PRIMITIVE" *) + BUFG clkf_buf + (.I(clkfbout_clk_wiz_0), + .O(clkfbout_buf_clk_wiz_0)); + (* BOX_TYPE = "PRIMITIVE" *) + (* CAPACITANCE = "DONT_CARE" *) + (* IBUF_DELAY_VALUE = "0" *) + (* IFD_DELAY_VALUE = "AUTO" *) + IBUF #( + .IOSTANDARD("DEFAULT")) + clkin1_ibufg + (.I(clk_in1), + .O(clk_in1_clk_wiz_0)); + (* BOX_TYPE = "PRIMITIVE" *) + BUFG clkout1_buf + (.I(clk_out1_clk_wiz_0), + .O(clk_out1)); + (* BOX_TYPE = "PRIMITIVE" *) + BUFG clkout2_buf + (.I(clk_out2_clk_wiz_0), + .O(clk_out2)); + (* BOX_TYPE = "PRIMITIVE" *) + BUFG clkout3_buf + (.I(clk_out3_clk_wiz_0), + .O(clk_out3)); + (* BOX_TYPE = "PRIMITIVE" *) + BUFG clkout4_buf + (.I(clk_out4_clk_wiz_0), + .O(clk_out4)); + (* BOX_TYPE = "PRIMITIVE" *) + MMCME2_ADV #( + .BANDWIDTH("OPTIMIZED"), + .CLKFBOUT_MULT_F(6.000000), + .CLKFBOUT_PHASE(0.000000), + .CLKFBOUT_USE_FINE_PS("FALSE"), + .CLKIN1_PERIOD(10.000000), + .CLKIN2_PERIOD(0.000000), + .CLKOUT0_DIVIDE_F(6.000000), + .CLKOUT0_DUTY_CYCLE(0.500000), + .CLKOUT0_PHASE(0.000000), + .CLKOUT0_USE_FINE_PS("FALSE"), + .CLKOUT1_DIVIDE(3), + .CLKOUT1_DUTY_CYCLE(0.500000), + .CLKOUT1_PHASE(0.000000), + .CLKOUT1_USE_FINE_PS("FALSE"), + .CLKOUT2_DIVIDE(50), + .CLKOUT2_DUTY_CYCLE(0.500000), + .CLKOUT2_PHASE(0.000000), + .CLKOUT2_USE_FINE_PS("FALSE"), + .CLKOUT3_DIVIDE(12), + .CLKOUT3_DUTY_CYCLE(0.500000), + .CLKOUT3_PHASE(0.000000), + .CLKOUT3_USE_FINE_PS("FALSE"), + .CLKOUT4_CASCADE("FALSE"), + .CLKOUT4_DIVIDE(1), + .CLKOUT4_DUTY_CYCLE(0.500000), + .CLKOUT4_PHASE(0.000000), + .CLKOUT4_USE_FINE_PS("FALSE"), + .CLKOUT5_DIVIDE(1), + .CLKOUT5_DUTY_CYCLE(0.500000), + .CLKOUT5_PHASE(0.000000), + .CLKOUT5_USE_FINE_PS("FALSE"), + .CLKOUT6_DIVIDE(1), + .CLKOUT6_DUTY_CYCLE(0.500000), + .CLKOUT6_PHASE(0.000000), + .CLKOUT6_USE_FINE_PS("FALSE"), + .COMPENSATION("ZHOLD"), + .DIVCLK_DIVIDE(1), + .IS_CLKINSEL_INVERTED(1'b0), + .IS_PSEN_INVERTED(1'b0), + .IS_PSINCDEC_INVERTED(1'b0), + .IS_PWRDWN_INVERTED(1'b0), + .IS_RST_INVERTED(1'b0), + .REF_JITTER1(0.010000), + .REF_JITTER2(0.010000), + .SS_EN("FALSE"), + .SS_MODE("CENTER_HIGH"), + .SS_MOD_PERIOD(10000), + .STARTUP_WAIT("FALSE")) + mmcm_adv_inst + (.CLKFBIN(clkfbout_buf_clk_wiz_0), + .CLKFBOUT(clkfbout_clk_wiz_0), + .CLKFBOUTB(NLW_mmcm_adv_inst_CLKFBOUTB_UNCONNECTED), + .CLKFBSTOPPED(NLW_mmcm_adv_inst_CLKFBSTOPPED_UNCONNECTED), + .CLKIN1(clk_in1_clk_wiz_0), + .CLKIN2(1'b0), + .CLKINSEL(1'b1), + .CLKINSTOPPED(NLW_mmcm_adv_inst_CLKINSTOPPED_UNCONNECTED), + .CLKOUT0(clk_out1_clk_wiz_0), + .CLKOUT0B(NLW_mmcm_adv_inst_CLKOUT0B_UNCONNECTED), + .CLKOUT1(clk_out2_clk_wiz_0), + .CLKOUT1B(NLW_mmcm_adv_inst_CLKOUT1B_UNCONNECTED), + .CLKOUT2(clk_out3_clk_wiz_0), + .CLKOUT2B(NLW_mmcm_adv_inst_CLKOUT2B_UNCONNECTED), + .CLKOUT3(clk_out4_clk_wiz_0), + .CLKOUT3B(NLW_mmcm_adv_inst_CLKOUT3B_UNCONNECTED), + .CLKOUT4(NLW_mmcm_adv_inst_CLKOUT4_UNCONNECTED), + .CLKOUT5(NLW_mmcm_adv_inst_CLKOUT5_UNCONNECTED), + .CLKOUT6(NLW_mmcm_adv_inst_CLKOUT6_UNCONNECTED), + .DADDR({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .DCLK(1'b0), + .DEN(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .DO(NLW_mmcm_adv_inst_DO_UNCONNECTED[15:0]), + .DRDY(NLW_mmcm_adv_inst_DRDY_UNCONNECTED), + .DWE(1'b0), + .LOCKED(locked), + .PSCLK(1'b0), + .PSDONE(NLW_mmcm_adv_inst_PSDONE_UNCONNECTED), + .PSEN(1'b0), + .PSINCDEC(1'b0), + .PWRDWN(1'b0), + .RST(reset)); +endmodule +`ifndef GLBL +`define GLBL +`timescale 1 ps / 1 ps + +module glbl (); + + parameter ROC_WIDTH = 100000; + parameter TOC_WIDTH = 0; + parameter GRES_WIDTH = 10000; + parameter GRES_START = 10000; + +//-------- STARTUP Globals -------------- + wire GSR; + wire GTS; + wire GWE; + wire PRLD; + wire GRESTORE; + tri1 p_up_tmp; + tri (weak1, strong0) PLL_LOCKG = p_up_tmp; + + wire PROGB_GLBL; + wire CCLKO_GLBL; + wire FCSBO_GLBL; + wire [3:0] DO_GLBL; + wire [3:0] DI_GLBL; + + reg GSR_int; + reg GTS_int; + reg PRLD_int; + reg GRESTORE_int; + +//-------- JTAG Globals -------------- + wire JTAG_TDO_GLBL; + wire JTAG_TCK_GLBL; + wire JTAG_TDI_GLBL; + wire JTAG_TMS_GLBL; + wire JTAG_TRST_GLBL; + + reg JTAG_CAPTURE_GLBL; + reg JTAG_RESET_GLBL; + reg JTAG_SHIFT_GLBL; + reg JTAG_UPDATE_GLBL; + reg JTAG_RUNTEST_GLBL; + + reg JTAG_SEL1_GLBL = 0; + reg JTAG_SEL2_GLBL = 0 ; + reg JTAG_SEL3_GLBL = 0; + reg JTAG_SEL4_GLBL = 0; + + reg JTAG_USER_TDO1_GLBL = 1'bz; + reg JTAG_USER_TDO2_GLBL = 1'bz; + reg JTAG_USER_TDO3_GLBL = 1'bz; + reg JTAG_USER_TDO4_GLBL = 1'bz; + + assign (strong1, weak0) GSR = GSR_int; + assign (strong1, weak0) GTS = GTS_int; + assign (weak1, weak0) PRLD = PRLD_int; + assign (strong1, weak0) GRESTORE = GRESTORE_int; + + initial begin + GSR_int = 1'b1; + PRLD_int = 1'b1; + #(ROC_WIDTH) + GSR_int = 1'b0; + PRLD_int = 1'b0; + end + + initial begin + GTS_int = 1'b1; + #(TOC_WIDTH) + GTS_int = 1'b0; + end + + initial begin + GRESTORE_int = 1'b0; + #(GRES_START); + GRESTORE_int = 1'b1; + #(GRES_WIDTH); + GRESTORE_int = 1'b0; + end + +endmodule +`endif diff --git a/proj/AudioProc.cache/ip/2024.1/0/e/0edd54b7fee8338b/clk_wiz_0_sim_netlist.vhdl b/proj/AudioProc.cache/ip/2024.1/0/e/0edd54b7fee8338b/clk_wiz_0_sim_netlist.vhdl new file mode 100755 index 0000000..a8125e2 --- /dev/null +++ b/proj/AudioProc.cache/ip/2024.1/0/e/0edd54b7fee8338b/clk_wiz_0_sim_netlist.vhdl @@ -0,0 +1,216 @@ +-- Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. +-- Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. +-- -------------------------------------------------------------------------------- +-- Tool Version: Vivado v.2024.1 (lin64) Build 5076996 Wed May 22 18:36:09 MDT 2024 +-- Date : Wed Feb 26 11:54:28 2025 +-- Host : fl-tp-br-604 running 64-bit Ubuntu 24.04.1 LTS +-- Command : write_vhdl -force -mode funcsim -rename_top decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix -prefix +-- decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix_ clk_wiz_0_sim_netlist.vhdl +-- Design : clk_wiz_0 +-- Purpose : This VHDL netlist is a functional simulation representation of the design and should not be modified or +-- synthesized. This netlist cannot be used for SDF annotated simulation. +-- Device : xc7a200tsbg484-1 +-- -------------------------------------------------------------------------------- +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix_clk_wiz_0_clk_wiz is + port ( + clk_out1 : out STD_LOGIC; + clk_out2 : out STD_LOGIC; + clk_out3 : out STD_LOGIC; + clk_out4 : out STD_LOGIC; + reset : in STD_LOGIC; + locked : out STD_LOGIC; + clk_in1 : in STD_LOGIC + ); +end decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix_clk_wiz_0_clk_wiz; + +architecture STRUCTURE of decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix_clk_wiz_0_clk_wiz is + signal clk_in1_clk_wiz_0 : STD_LOGIC; + signal clk_out1_clk_wiz_0 : STD_LOGIC; + signal clk_out2_clk_wiz_0 : STD_LOGIC; + signal clk_out3_clk_wiz_0 : STD_LOGIC; + signal clk_out4_clk_wiz_0 : STD_LOGIC; + signal clkfbout_buf_clk_wiz_0 : STD_LOGIC; + signal clkfbout_clk_wiz_0 : STD_LOGIC; + signal NLW_mmcm_adv_inst_CLKFBOUTB_UNCONNECTED : STD_LOGIC; + signal NLW_mmcm_adv_inst_CLKFBSTOPPED_UNCONNECTED : STD_LOGIC; + signal NLW_mmcm_adv_inst_CLKINSTOPPED_UNCONNECTED : STD_LOGIC; + signal NLW_mmcm_adv_inst_CLKOUT0B_UNCONNECTED : STD_LOGIC; + signal NLW_mmcm_adv_inst_CLKOUT1B_UNCONNECTED : STD_LOGIC; + signal NLW_mmcm_adv_inst_CLKOUT2B_UNCONNECTED : STD_LOGIC; + signal NLW_mmcm_adv_inst_CLKOUT3B_UNCONNECTED : STD_LOGIC; + signal NLW_mmcm_adv_inst_CLKOUT4_UNCONNECTED : STD_LOGIC; + signal NLW_mmcm_adv_inst_CLKOUT5_UNCONNECTED : STD_LOGIC; + signal NLW_mmcm_adv_inst_CLKOUT6_UNCONNECTED : STD_LOGIC; + signal NLW_mmcm_adv_inst_DRDY_UNCONNECTED : STD_LOGIC; + signal NLW_mmcm_adv_inst_PSDONE_UNCONNECTED : STD_LOGIC; + signal NLW_mmcm_adv_inst_DO_UNCONNECTED : STD_LOGIC_VECTOR ( 15 downto 0 ); + attribute BOX_TYPE : string; + attribute BOX_TYPE of clkf_buf : label is "PRIMITIVE"; + attribute BOX_TYPE of clkin1_ibufg : label is "PRIMITIVE"; + attribute CAPACITANCE : string; + attribute CAPACITANCE of clkin1_ibufg : label is "DONT_CARE"; + attribute IBUF_DELAY_VALUE : string; + attribute IBUF_DELAY_VALUE of clkin1_ibufg : label is "0"; + attribute IFD_DELAY_VALUE : string; + attribute IFD_DELAY_VALUE of clkin1_ibufg : label is "AUTO"; + attribute BOX_TYPE of clkout1_buf : label is "PRIMITIVE"; + attribute BOX_TYPE of clkout2_buf : label is "PRIMITIVE"; + attribute BOX_TYPE of clkout3_buf : label is "PRIMITIVE"; + attribute BOX_TYPE of clkout4_buf : label is "PRIMITIVE"; + attribute BOX_TYPE of mmcm_adv_inst : label is "PRIMITIVE"; +begin +clkf_buf: unisim.vcomponents.BUFG + port map ( + I => clkfbout_clk_wiz_0, + O => clkfbout_buf_clk_wiz_0 + ); +clkin1_ibufg: unisim.vcomponents.IBUF + generic map( + IOSTANDARD => "DEFAULT" + ) + port map ( + I => clk_in1, + O => clk_in1_clk_wiz_0 + ); +clkout1_buf: unisim.vcomponents.BUFG + port map ( + I => clk_out1_clk_wiz_0, + O => clk_out1 + ); +clkout2_buf: unisim.vcomponents.BUFG + port map ( + I => clk_out2_clk_wiz_0, + O => clk_out2 + ); +clkout3_buf: unisim.vcomponents.BUFG + port map ( + I => clk_out3_clk_wiz_0, + O => clk_out3 + ); +clkout4_buf: unisim.vcomponents.BUFG + port map ( + I => clk_out4_clk_wiz_0, + O => clk_out4 + ); +mmcm_adv_inst: unisim.vcomponents.MMCME2_ADV + generic map( + BANDWIDTH => "OPTIMIZED", + CLKFBOUT_MULT_F => 6.000000, + CLKFBOUT_PHASE => 0.000000, + CLKFBOUT_USE_FINE_PS => false, + CLKIN1_PERIOD => 10.000000, + CLKIN2_PERIOD => 0.000000, + CLKOUT0_DIVIDE_F => 6.000000, + CLKOUT0_DUTY_CYCLE => 0.500000, + CLKOUT0_PHASE => 0.000000, + CLKOUT0_USE_FINE_PS => false, + CLKOUT1_DIVIDE => 3, + CLKOUT1_DUTY_CYCLE => 0.500000, + CLKOUT1_PHASE => 0.000000, + CLKOUT1_USE_FINE_PS => false, + CLKOUT2_DIVIDE => 50, + CLKOUT2_DUTY_CYCLE => 0.500000, + CLKOUT2_PHASE => 0.000000, + CLKOUT2_USE_FINE_PS => false, + CLKOUT3_DIVIDE => 12, + CLKOUT3_DUTY_CYCLE => 0.500000, + CLKOUT3_PHASE => 0.000000, + CLKOUT3_USE_FINE_PS => false, + CLKOUT4_CASCADE => false, + CLKOUT4_DIVIDE => 1, + CLKOUT4_DUTY_CYCLE => 0.500000, + CLKOUT4_PHASE => 0.000000, + CLKOUT4_USE_FINE_PS => false, + CLKOUT5_DIVIDE => 1, + CLKOUT5_DUTY_CYCLE => 0.500000, + CLKOUT5_PHASE => 0.000000, + CLKOUT5_USE_FINE_PS => false, + CLKOUT6_DIVIDE => 1, + CLKOUT6_DUTY_CYCLE => 0.500000, + CLKOUT6_PHASE => 0.000000, + CLKOUT6_USE_FINE_PS => false, + COMPENSATION => "ZHOLD", + DIVCLK_DIVIDE => 1, + IS_CLKINSEL_INVERTED => '0', + IS_PSEN_INVERTED => '0', + IS_PSINCDEC_INVERTED => '0', + IS_PWRDWN_INVERTED => '0', + IS_RST_INVERTED => '0', + REF_JITTER1 => 0.010000, + REF_JITTER2 => 0.010000, + SS_EN => "FALSE", + SS_MODE => "CENTER_HIGH", + SS_MOD_PERIOD => 10000, + STARTUP_WAIT => false + ) + port map ( + CLKFBIN => clkfbout_buf_clk_wiz_0, + CLKFBOUT => clkfbout_clk_wiz_0, + CLKFBOUTB => NLW_mmcm_adv_inst_CLKFBOUTB_UNCONNECTED, + CLKFBSTOPPED => NLW_mmcm_adv_inst_CLKFBSTOPPED_UNCONNECTED, + CLKIN1 => clk_in1_clk_wiz_0, + CLKIN2 => '0', + CLKINSEL => '1', + CLKINSTOPPED => NLW_mmcm_adv_inst_CLKINSTOPPED_UNCONNECTED, + CLKOUT0 => clk_out1_clk_wiz_0, + CLKOUT0B => NLW_mmcm_adv_inst_CLKOUT0B_UNCONNECTED, + CLKOUT1 => clk_out2_clk_wiz_0, + CLKOUT1B => NLW_mmcm_adv_inst_CLKOUT1B_UNCONNECTED, + CLKOUT2 => clk_out3_clk_wiz_0, + CLKOUT2B => NLW_mmcm_adv_inst_CLKOUT2B_UNCONNECTED, + CLKOUT3 => clk_out4_clk_wiz_0, + CLKOUT3B => NLW_mmcm_adv_inst_CLKOUT3B_UNCONNECTED, + CLKOUT4 => NLW_mmcm_adv_inst_CLKOUT4_UNCONNECTED, + CLKOUT5 => NLW_mmcm_adv_inst_CLKOUT5_UNCONNECTED, + CLKOUT6 => NLW_mmcm_adv_inst_CLKOUT6_UNCONNECTED, + DADDR(6 downto 0) => B"0000000", + DCLK => '0', + DEN => '0', + DI(15 downto 0) => B"0000000000000000", + DO(15 downto 0) => NLW_mmcm_adv_inst_DO_UNCONNECTED(15 downto 0), + DRDY => NLW_mmcm_adv_inst_DRDY_UNCONNECTED, + DWE => '0', + LOCKED => locked, + PSCLK => '0', + PSDONE => NLW_mmcm_adv_inst_PSDONE_UNCONNECTED, + PSEN => '0', + PSINCDEC => '0', + PWRDWN => '0', + RST => reset + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix is + port ( + clk_out1 : out STD_LOGIC; + clk_out2 : out STD_LOGIC; + clk_out3 : out STD_LOGIC; + clk_out4 : out STD_LOGIC; + reset : in STD_LOGIC; + locked : out STD_LOGIC; + clk_in1 : in STD_LOGIC + ); + attribute NotValidForBitStream : boolean; + attribute NotValidForBitStream of decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix : entity is true; +end decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix; + +architecture STRUCTURE of decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix is +begin +inst: entity work.decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix_clk_wiz_0_clk_wiz + port map ( + clk_in1 => clk_in1, + clk_out1 => clk_out1, + clk_out2 => clk_out2, + clk_out3 => clk_out3, + clk_out4 => clk_out4, + locked => locked, + reset => reset + ); +end STRUCTURE; diff --git a/proj/AudioProc.cache/ip/2024.1/0/e/0edd54b7fee8338b/clk_wiz_0_stub.v b/proj/AudioProc.cache/ip/2024.1/0/e/0edd54b7fee8338b/clk_wiz_0_stub.v new file mode 100755 index 0000000..34b708c --- /dev/null +++ b/proj/AudioProc.cache/ip/2024.1/0/e/0edd54b7fee8338b/clk_wiz_0_stub.v @@ -0,0 +1,31 @@ +// Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. +// Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. +// -------------------------------------------------------------------------------- +// Tool Version: Vivado v.2024.1 (lin64) Build 5076996 Wed May 22 18:36:09 MDT 2024 +// Date : Wed Feb 26 11:54:27 2025 +// Host : fl-tp-br-604 running 64-bit Ubuntu 24.04.1 LTS +// Command : write_verilog -force -mode synth_stub -rename_top decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix -prefix +// decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix_ clk_wiz_0_stub.v +// Design : clk_wiz_0 +// Purpose : Stub declaration of top-level module interface +// Device : xc7a200tsbg484-1 +// -------------------------------------------------------------------------------- + +// This empty module with port declaration file causes synthesis tools to infer a black box for IP. +// The synthesis directives are for Synopsys Synplify support to prevent IO buffer insertion. +// Please paste the declaration into a Verilog source file or add the file as an additional source. +module decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix(clk_out1, clk_out2, clk_out3, clk_out4, reset, + locked, clk_in1) +/* synthesis syn_black_box black_box_pad_pin="reset,locked,clk_in1" */ +/* synthesis syn_force_seq_prim="clk_out1" */ +/* synthesis syn_force_seq_prim="clk_out2" */ +/* synthesis syn_force_seq_prim="clk_out3" */ +/* synthesis syn_force_seq_prim="clk_out4" */; + output clk_out1 /* synthesis syn_isclock = 1 */; + output clk_out2 /* synthesis syn_isclock = 1 */; + output clk_out3 /* synthesis syn_isclock = 1 */; + output clk_out4 /* synthesis syn_isclock = 1 */; + input reset; + output locked; + input clk_in1; +endmodule diff --git a/proj/AudioProc.cache/ip/2024.1/0/e/0edd54b7fee8338b/clk_wiz_0_stub.vhdl b/proj/AudioProc.cache/ip/2024.1/0/e/0edd54b7fee8338b/clk_wiz_0_stub.vhdl new file mode 100755 index 0000000..c1b53b0 --- /dev/null +++ b/proj/AudioProc.cache/ip/2024.1/0/e/0edd54b7fee8338b/clk_wiz_0_stub.vhdl @@ -0,0 +1,35 @@ +-- Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. +-- Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. +-- -------------------------------------------------------------------------------- +-- Tool Version: Vivado v.2024.1 (lin64) Build 5076996 Wed May 22 18:36:09 MDT 2024 +-- Date : Wed Feb 26 11:54:27 2025 +-- Host : fl-tp-br-604 running 64-bit Ubuntu 24.04.1 LTS +-- Command : write_vhdl -force -mode synth_stub -rename_top decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix -prefix +-- decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix_ clk_wiz_0_stub.vhdl +-- Design : clk_wiz_0 +-- Purpose : Stub declaration of top-level module interface +-- Device : xc7a200tsbg484-1 +-- -------------------------------------------------------------------------------- +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; + +entity decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix is + Port ( + clk_out1 : out STD_LOGIC; + clk_out2 : out STD_LOGIC; + clk_out3 : out STD_LOGIC; + clk_out4 : out STD_LOGIC; + reset : in STD_LOGIC; + locked : out STD_LOGIC; + clk_in1 : in STD_LOGIC + ); + +end decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix; + +architecture stub of decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix is +attribute syn_black_box : boolean; +attribute black_box_pad_pin : string; +attribute syn_black_box of stub : architecture is true; +attribute black_box_pad_pin of stub : architecture is "clk_out1,clk_out2,clk_out3,clk_out4,reset,locked,clk_in1"; +begin +end; diff --git a/proj/AudioProc.cache/sim/ssm.db b/proj/AudioProc.cache/sim/ssm.db new file mode 100644 index 0000000..593ba29 --- /dev/null +++ b/proj/AudioProc.cache/sim/ssm.db @@ -0,0 +1,11 @@ +################################################################################ +# DONOT REMOVE THIS FILE +# Unified simulation database file for selected simulation model for IP +# +# File: ssm.db (Wed Feb 26 12:03:32 2025) +# +# This file is generated by the unified simulation automation and contains the +# selected simulation model information for the IP/BD instances. +# DONOT REMOVE THIS FILE +################################################################################ +clk_wiz_0,rtl diff --git a/proj/AudioProc.cache/wt/project.wpc b/proj/AudioProc.cache/wt/project.wpc new file mode 100644 index 0000000..9b34209 --- /dev/null +++ b/proj/AudioProc.cache/wt/project.wpc @@ -0,0 +1,3 @@ +version:1 +6d6f64655f636f756e7465727c4755494d6f6465:1 +eof: diff --git a/proj/AudioProc.cache/wt/synthesis.wdf b/proj/AudioProc.cache/wt/synthesis.wdf new file mode 100644 index 0000000..d385d80 --- /dev/null +++ b/proj/AudioProc.cache/wt/synthesis.wdf @@ -0,0 +1,52 @@ +version:1 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d70617274:78633761323030747362673438342d31:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6e616d65:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d746f70:636c6b5f77697a5f30:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d696e636c7564655f64697273:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d67656e65726963:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d646566696e65:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d766572696c6f675f646566696e65:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d7668646c5f646566696e65:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d636f6e737472736574:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d7365755f70726f74656374:64656661756c743a3a6e6f6e65:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d666c617474656e5f686965726172636879:64656661756c743a3a72656275696c74:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d67617465645f636c6f636b5f636f6e76657273696f6e:64656661756c743a3a6f6666:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d646972656374697665:64656661756c743a3a64656661756c74:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d696e6372656d656e74616c5f6d6f6465:6f6666:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d72746c:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6c696e74:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d66696c65:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d64617461666c6f77:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d64617461666c6f775f73657474696e6773:64656661756c743a3a6e6f6e65:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d72746c5f736b69705f6970:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d72746c5f736b69705f636f6e73747261696e7473:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6e6f5f6c63:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6c75745f63617363616465:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6f73:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d62756667:64656661756c743a3a3132:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d66616e6f75745f6c696d6974:64656661756c743a3a3130303030:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d73687265675f6d696e5f73697a65:64656661756c743a3a33:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6d6f6465:6f75745f6f665f636f6e74657874:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d66736d5f65787472616374696f6e:64656661756c743a3a6175746f:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6b6565705f6571756976616c656e745f726567697374657273:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d7265736f757263655f73686172696e67:64656661756c743a3a6175746f:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d636173636164655f647370:64656661756c743a3a6175746f:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d636f6e74726f6c5f7365745f6f70745f7468726573686f6c64:64656661756c743a3a6175746f:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6d61785f6272616d:64656661756c743a3a2d31:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6d61785f7572616d:64656661756c743a3a2d31:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6d61785f647370:64656661756c743a3a2d31:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6d61785f6272616d5f636173636164655f686569676874:64656661756c743a3a2d31:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6d61785f7572616d5f636173636164655f686569676874:64656661756c743a3a2d31:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d726574696d696e67:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6e6f5f726574696d696e67:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d676c6f62616c5f726574696d696e67:64656661756c743a3a6175746f:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6e6f5f73726c65787472616374:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d617373657274:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6e6f5f74696d696e675f64726976656e:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d73666375:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d64656275675f6c6f67:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d657374:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c7573616765:656c6170736564:30303a30303a323173:00:00 +73796e746865736973:73796e7468657369735c7573616765:6d656d6f72795f7065616b:323637372e3536364d42:00:00 +73796e746865736973:73796e7468657369735c7573616765:6d656d6f72795f6761696e:3937322e3133334d42:00:00 +eof:3734131713 diff --git a/proj/AudioProc.cache/wt/xsim.wdf b/proj/AudioProc.cache/wt/xsim.wdf new file mode 100644 index 0000000..51d5206 --- /dev/null +++ b/proj/AudioProc.cache/wt/xsim.wdf @@ -0,0 +1,4 @@ +version:1 +7873696d:7873696d5c636f6d6d616e645f6c696e655f6f7074696f6e73:2d73696d5f6d6f6465:6265686176696f72616c:00:00 +7873696d:7873696d5c636f6d6d616e645f6c696e655f6f7074696f6e73:2d73696d5f74797065:64656661756c743a3a:00:00 +eof:2427094519 diff --git a/proj/AudioProc.hw/AudioProc.lpr b/proj/AudioProc.hw/AudioProc.lpr new file mode 100644 index 0000000..afc0a86 --- /dev/null +++ b/proj/AudioProc.hw/AudioProc.lpr @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Product Version: Vivado v2024.1 (64-bit) --> +<!-- --> +<!-- Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. --> +<!-- Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. --> + +<labtools version="1" minor="0"/> diff --git a/proj/AudioProc.ip_user_files/README.txt b/proj/AudioProc.ip_user_files/README.txt new file mode 100644 index 0000000..023052c --- /dev/null +++ b/proj/AudioProc.ip_user_files/README.txt @@ -0,0 +1 @@ +The files in this directory structure are automatically generated and managed by Vivado. Editing these files is not recommended. diff --git a/proj/AudioProc.ip_user_files/ip/clk_wiz_0/clk_wiz_0.vho b/proj/AudioProc.ip_user_files/ip/clk_wiz_0/clk_wiz_0.vho new file mode 100755 index 0000000..b02ca8e --- /dev/null +++ b/proj/AudioProc.ip_user_files/ip/clk_wiz_0/clk_wiz_0.vho @@ -0,0 +1,100 @@ + +-- (c) Copyright 2017-2018, 2023 Advanced Micro Devices, Inc. All rights reserved. +-- +-- This file contains confidential and proprietary information +-- of AMD and is protected under U.S. and international copyright +-- and other intellectual property laws. +-- +-- DISCLAIMER +-- This disclaimer is not a license and does not grant any +-- rights to the materials distributed herewith. Except as +-- otherwise provided in a valid license issued to you by +-- AMD, and to the maximum extent permitted by applicable +-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +-- WITH ALL FAULTS, AND AMD HEREBY DISCLAIMS ALL WARRANTIES +-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +-- (2) AMD shall not be liable (whether in contract or tort, +-- including negligence, or under any other theory of +-- liability) for any loss or damage of any kind or nature +-- related to, arising under or in connection with these +-- materials, including for any direct, or any indirect, +-- special, incidental, or consequential loss or damage +-- (including loss of data, profits, goodwill, or any type of +-- loss or damage suffered as a result of any action brought +-- by a third party) even if such damage or loss was +-- reasonably foreseeable or AMD had been advised of the +-- possibility of the same. +-- +-- CRITICAL APPLICATIONS +-- AMD products are not designed or intended to be fail- +-- safe, or for use in any application requiring fail-safe +-- performance, such as life-support or safety devices or +-- systems, Class III medical devices, nuclear facilities, +-- applications related to the deployment of airbags, or any +-- other applications that could lead to death, personal +-- injury, or severe property or environmental damage +-- (individually and collectively, "Critical +-- Applications"). Customer assumes the sole risk and +-- liability of any use of AMD products in Critical +-- Applications, subject only to applicable laws and +-- regulations governing limitations on product liability. +-- +-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +-- PART OF THIS FILE AT ALL TIMES. +------------------------------------------------------------------------------ +-- User entered comments +------------------------------------------------------------------------------ +-- None +-- +------------------------------------------------------------------------------ +-- Output Output Phase Duty Cycle Pk-to-Pk Phase +-- Clock Freq (MHz) (degrees) (%) Jitter (ps) Error (ps) +------------------------------------------------------------------------------ +-- clk_out1__100.00000______0.000______50.0______151.366____132.063 +-- clk_out2__200.00000______0.000______50.0______132.221____132.063 +-- clk_out3__12.00000______0.000______50.0______231.952____132.063 +-- clk_out4__50.00000______0.000______50.0______174.353____132.063 +-- +------------------------------------------------------------------------------ +-- Input Clock Freq (MHz) Input Jitter (UI) +------------------------------------------------------------------------------ +-- __primary_________100.000____________0.010 + + +-- The following code must appear in the VHDL architecture header: +------------- Begin Cut here for COMPONENT Declaration ------ COMP_TAG +component clk_wiz_0 +port + (-- Clock in ports + -- Clock out ports + clk_out1 : out std_logic; + clk_out2 : out std_logic; + clk_out3 : out std_logic; + clk_out4 : out std_logic; + -- Status and control signals + reset : in std_logic; + locked : out std_logic; + clk_in1 : in std_logic + ); +end component; + +-- COMP_TAG_END ------ End COMPONENT Declaration ------------ +-- The following code must appear in the VHDL architecture +-- body. Substitute your own instance name and net names. +------------- Begin Cut here for INSTANTIATION Template ----- INST_TAG +your_instance_name : clk_wiz_0 + port map ( + -- Clock out ports + clk_out1 => clk_out1, + clk_out2 => clk_out2, + clk_out3 => clk_out3, + clk_out4 => clk_out4, + -- Status and control signals + reset => reset, + locked => locked, + -- Clock in ports + clk_in1 => clk_in1 + ); +-- INST_TAG_END ------ End INSTANTIATION Template ------------ diff --git a/proj/AudioProc.ip_user_files/ip/clk_wiz_0/clk_wiz_0_stub.v b/proj/AudioProc.ip_user_files/ip/clk_wiz_0/clk_wiz_0_stub.v new file mode 100644 index 0000000..88530c7 --- /dev/null +++ b/proj/AudioProc.ip_user_files/ip/clk_wiz_0/clk_wiz_0_stub.v @@ -0,0 +1,31 @@ +// Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. +// Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. +// -------------------------------------------------------------------------------- +// Tool Version: Vivado v.2024.1 (lin64) Build 5076996 Wed May 22 18:36:09 MDT 2024 +// Date : Wed Feb 26 11:54:28 2025 +// Host : fl-tp-br-604 running 64-bit Ubuntu 24.04.1 LTS +// Command : write_verilog -force -mode synth_stub +// /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0_stub.v +// Design : clk_wiz_0 +// Purpose : Stub declaration of top-level module interface +// Device : xc7a200tsbg484-1 +// -------------------------------------------------------------------------------- + +// This empty module with port declaration file causes synthesis tools to infer a black box for IP. +// The synthesis directives are for Synopsys Synplify support to prevent IO buffer insertion. +// Please paste the declaration into a Verilog source file or add the file as an additional source. +module clk_wiz_0(clk_out1, clk_out2, clk_out3, clk_out4, reset, + locked, clk_in1) +/* synthesis syn_black_box black_box_pad_pin="reset,locked,clk_in1" */ +/* synthesis syn_force_seq_prim="clk_out1" */ +/* synthesis syn_force_seq_prim="clk_out2" */ +/* synthesis syn_force_seq_prim="clk_out3" */ +/* synthesis syn_force_seq_prim="clk_out4" */; + output clk_out1 /* synthesis syn_isclock = 1 */; + output clk_out2 /* synthesis syn_isclock = 1 */; + output clk_out3 /* synthesis syn_isclock = 1 */; + output clk_out4 /* synthesis syn_isclock = 1 */; + input reset; + output locked; + input clk_in1; +endmodule diff --git a/proj/AudioProc.ip_user_files/ip/clk_wiz_0/clk_wiz_0_stub.vhdl b/proj/AudioProc.ip_user_files/ip/clk_wiz_0/clk_wiz_0_stub.vhdl new file mode 100644 index 0000000..04dfc6c --- /dev/null +++ b/proj/AudioProc.ip_user_files/ip/clk_wiz_0/clk_wiz_0_stub.vhdl @@ -0,0 +1,35 @@ +-- Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. +-- Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. +-- -------------------------------------------------------------------------------- +-- Tool Version: Vivado v.2024.1 (lin64) Build 5076996 Wed May 22 18:36:09 MDT 2024 +-- Date : Wed Feb 26 11:54:28 2025 +-- Host : fl-tp-br-604 running 64-bit Ubuntu 24.04.1 LTS +-- Command : write_vhdl -force -mode synth_stub +-- /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0_stub.vhdl +-- Design : clk_wiz_0 +-- Purpose : Stub declaration of top-level module interface +-- Device : xc7a200tsbg484-1 +-- -------------------------------------------------------------------------------- +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; + +entity clk_wiz_0 is + Port ( + clk_out1 : out STD_LOGIC; + clk_out2 : out STD_LOGIC; + clk_out3 : out STD_LOGIC; + clk_out4 : out STD_LOGIC; + reset : in STD_LOGIC; + locked : out STD_LOGIC; + clk_in1 : in STD_LOGIC + ); + +end clk_wiz_0; + +architecture stub of clk_wiz_0 is +attribute syn_black_box : boolean; +attribute black_box_pad_pin : string; +attribute syn_black_box of stub : architecture is true; +attribute black_box_pad_pin of stub : architecture is "clk_out1,clk_out2,clk_out3,clk_out4,reset,locked,clk_in1"; +begin +end; diff --git a/proj/AudioProc.ip_user_files/ipstatic/mmcm_pll_drp_func_7s_mmcm.vh b/proj/AudioProc.ip_user_files/ipstatic/mmcm_pll_drp_func_7s_mmcm.vh new file mode 100755 index 0000000..6c4981a --- /dev/null +++ b/proj/AudioProc.ip_user_files/ipstatic/mmcm_pll_drp_func_7s_mmcm.vh @@ -0,0 +1,680 @@ +// (c) Copyright 2009-2010, 2023 Advanced Micro Devices, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of AMD and is protected under U.S. and international copyright +// and other intellectual property laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// AMD, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND AMD HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) AMD shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or AMD had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// AMD products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of AMD products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +//////////////////////////////////////////////////////////// +// +/////////////////////////////////////////////////////////////////////////////// + +// These are user functions that should not be modified. Changes to the defines +// or code within the functions may alter the accuracy of the calculations. + +// Define debug to provide extra messages durring elaboration +//`define DEBUG 1 + +// FRAC_PRECISION describes the width of the fractional portion of the fixed +// point numbers. These should not be modified, they are for development +// only +`define FRAC_PRECISION 10 +// FIXED_WIDTH describes the total size for fixed point calculations(int+frac). +// Warning: L.50 and below will not calculate properly with FIXED_WIDTHs +// greater than 32 +`define FIXED_WIDTH 32 + +// This function takes a fixed point number and rounds it to the nearest +// fractional precision bit. +function [`FIXED_WIDTH:1] round_frac + ( + // Input is (FIXED_WIDTH-FRAC_PRECISION).FRAC_PRECISION fixed point number + input [`FIXED_WIDTH:1] decimal, + + // This describes the precision of the fraction, for example a value + // of 1 would modify the fractional so that instead of being a .16 + // fractional, it would be a .1 (rounded to the nearest 0.5 in turn) + input [`FIXED_WIDTH:1] precision + ); + + begin + + `ifdef DEBUG + $display("round_frac - decimal: %h, precision: %h", decimal, precision); + `endif + // If the fractional precision bit is high then round up + if( decimal[(`FRAC_PRECISION-precision)] == 1'b1) begin + round_frac = decimal + (1'b1 << (`FRAC_PRECISION-precision)); + end else begin + round_frac = decimal; + end + `ifdef DEBUG + $display("round_frac: %h", round_frac); + `endif + end +endfunction + +// This function calculates high_time, low_time, w_edge, and no_count +// of a non-fractional counter based on the divide and duty cycle +// +// NOTE: high_time and low_time are returned as integers between 0 and 63 +// inclusive. 64 should equal 6'b000000 (in other words it is okay to +// ignore the overflow) +function [13:0] mmcm_pll_divider + ( + input [7:0] divide, // Max divide is 128 + input [31:0] duty_cycle // Duty cycle is multiplied by 100,000 + ); + + reg [`FIXED_WIDTH:1] duty_cycle_fix; + + // High/Low time is initially calculated with a wider integer to prevent a + // calculation error when it overflows to 64. + reg [6:0] high_time; + reg [6:0] low_time; + reg w_edge; + reg no_count; + + reg [`FIXED_WIDTH:1] temp; + + begin + // Duty Cycle must be between 0 and 1,000 + if(duty_cycle <=0 || duty_cycle >= 100000) begin +`ifndef SYNTHESIS + $display("ERROR: duty_cycle: %d is invalid", duty_cycle); + `endif + $finish; + end + + // Convert to FIXED_WIDTH-FRAC_PRECISION.FRAC_PRECISION fixed point + duty_cycle_fix = (duty_cycle << `FRAC_PRECISION) / 100_000; + + `ifdef DEBUG + $display("duty_cycle_fix: %h", duty_cycle_fix); + `endif + + // If the divide is 1 nothing needs to be set except the no_count bit. + // Other values are dummies + if(divide == 7'h01) begin + high_time = 7'h01; + w_edge = 1'b0; + low_time = 7'h01; + no_count = 1'b1; + end else begin + temp = round_frac(duty_cycle_fix*divide, 1); + + // comes from above round_frac + high_time = temp[`FRAC_PRECISION+7:`FRAC_PRECISION+1]; + // If the duty cycle * divide rounded is .5 or greater then this bit + // is set. + w_edge = temp[`FRAC_PRECISION]; // comes from round_frac + + // If the high time comes out to 0, it needs to be set to at least 1 + // and w_edge set to 0 + if(high_time == 7'h00) begin + high_time = 7'h01; + w_edge = 1'b0; + end + + if(high_time == divide) begin + high_time = divide - 1; + w_edge = 1'b1; + end + + // Calculate low_time based on the divide setting and set no_count to + // 0 as it is only used when divide is 1. + low_time = divide - high_time; + no_count = 1'b0; + end + + // Set the return value. + mmcm_pll_divider = {w_edge,no_count,high_time[5:0],low_time[5:0]}; + end +endfunction + +// This function calculates mx, delay_time, and phase_mux +// of a non-fractional counter based on the divide and phase +// +// NOTE: The only valid value for the MX bits is 2'b00 to ensure the coarse mux +// is used. +function [10:0] mmcm_pll_phase + ( + // divide must be an integer (use fractional if not) + // assumed that divide already checked to be valid + input [7:0] divide, // Max divide is 128 + + // Phase is given in degrees (-360,000 to 360,000) + input signed [31:0] phase + ); + + reg [`FIXED_WIDTH:1] phase_in_cycles; + reg [`FIXED_WIDTH:1] phase_fixed; + reg [1:0] mx; + reg [5:0] delay_time; + reg [2:0] phase_mux; + + reg [`FIXED_WIDTH:1] temp; + + begin +`ifdef DEBUG + $display("mmcm_pll_phase-divide:%d,phase:%d", + divide, phase); +`endif + + if ((phase < -360000) || (phase > 360000)) begin +`ifndef SYNTHESIS + $display("ERROR: phase of $phase is not between -360000 and 360000"); + `endif + $finish; + end + + // If phase is less than 0, convert it to a positive phase shift + // Convert to (FIXED_WIDTH-FRAC_PRECISION).FRAC_PRECISION fixed point + if(phase < 0) begin + phase_fixed = ( (phase + 360000) << `FRAC_PRECISION ) / 1000; + end else begin + phase_fixed = ( phase << `FRAC_PRECISION ) / 1000; + end + + // Put phase in terms of decimal number of vco clock cycles + phase_in_cycles = ( phase_fixed * divide ) / 360; + +`ifdef DEBUG + $display("phase_in_cycles: %h", phase_in_cycles); +`endif + + + temp = round_frac(phase_in_cycles, 3); + + // set mx to 2'b00 that the phase mux from the VCO is enabled + mx = 2'b00; + phase_mux = temp[`FRAC_PRECISION:`FRAC_PRECISION-2]; + delay_time = temp[`FRAC_PRECISION+6:`FRAC_PRECISION+1]; + + `ifdef DEBUG + $display("temp: %h", temp); + `endif + + // Setup the return value + mmcm_pll_phase={mx, phase_mux, delay_time}; + end +endfunction + +// This function takes the divide value and outputs the necessary lock values +function [39:0] mmcm_pll_lock_lookup + ( + input [6:0] divide // Max divide is 64 + ); + + reg [2559:0] lookup; + + begin + lookup = { + // This table is composed of: + // LockRefDly_LockFBDly_LockCnt_LockSatHigh_UnlockCnt + 40'b00110_00110_1111101000_1111101001_0000000001, + 40'b00110_00110_1111101000_1111101001_0000000001, + 40'b01000_01000_1111101000_1111101001_0000000001, + 40'b01011_01011_1111101000_1111101001_0000000001, + 40'b01110_01110_1111101000_1111101001_0000000001, + 40'b10001_10001_1111101000_1111101001_0000000001, + 40'b10011_10011_1111101000_1111101001_0000000001, + 40'b10110_10110_1111101000_1111101001_0000000001, + 40'b11001_11001_1111101000_1111101001_0000000001, + 40'b11100_11100_1111101000_1111101001_0000000001, + 40'b11111_11111_1110000100_1111101001_0000000001, + 40'b11111_11111_1100111001_1111101001_0000000001, + 40'b11111_11111_1011101110_1111101001_0000000001, + 40'b11111_11111_1010111100_1111101001_0000000001, + 40'b11111_11111_1010001010_1111101001_0000000001, + 40'b11111_11111_1001110001_1111101001_0000000001, + 40'b11111_11111_1000111111_1111101001_0000000001, + 40'b11111_11111_1000100110_1111101001_0000000001, + 40'b11111_11111_1000001101_1111101001_0000000001, + 40'b11111_11111_0111110100_1111101001_0000000001, + 40'b11111_11111_0111011011_1111101001_0000000001, + 40'b11111_11111_0111000010_1111101001_0000000001, + 40'b11111_11111_0110101001_1111101001_0000000001, + 40'b11111_11111_0110010000_1111101001_0000000001, + 40'b11111_11111_0110010000_1111101001_0000000001, + 40'b11111_11111_0101110111_1111101001_0000000001, + 40'b11111_11111_0101011110_1111101001_0000000001, + 40'b11111_11111_0101011110_1111101001_0000000001, + 40'b11111_11111_0101000101_1111101001_0000000001, + 40'b11111_11111_0101000101_1111101001_0000000001, + 40'b11111_11111_0100101100_1111101001_0000000001, + 40'b11111_11111_0100101100_1111101001_0000000001, + 40'b11111_11111_0100101100_1111101001_0000000001, + 40'b11111_11111_0100010011_1111101001_0000000001, + 40'b11111_11111_0100010011_1111101001_0000000001, + 40'b11111_11111_0100010011_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001 + }; + + // Set lookup_entry with the explicit bits from lookup with a part select + mmcm_pll_lock_lookup = lookup[ ((64-divide)*40) +: 40]; + `ifdef DEBUG + $display("lock_lookup: %b", mmcm_pll_lock_lookup); + `endif + end +endfunction + +// This function takes the divide value and the bandwidth setting of the MMCM +// and outputs the digital filter settings necessary. +function [9:0] mmcm_pll_filter_lookup + ( + input [6:0] divide, // Max divide is 64 + input [8*9:0] BANDWIDTH + ); + + reg [639:0] lookup_low; + reg [639:0] lookup_high; + + reg [9:0] lookup_entry; + + begin + lookup_low = { + // CP_RES_LFHF + 10'b0010_1111_00, + 10'b0010_1111_00, + 10'b0010_1111_00, + 10'b0010_1111_00, + 10'b0010_0111_00, + 10'b0010_1011_00, + 10'b0010_1101_00, + 10'b0010_0011_00, + 10'b0010_0101_00, + 10'b0010_0101_00, + 10'b0010_1001_00, + 10'b0010_1110_00, + 10'b0010_1110_00, + 10'b0010_1110_00, + 10'b0010_1110_00, + 10'b0010_0001_00, + 10'b0010_0001_00, + 10'b0010_0001_00, + 10'b0010_0110_00, + 10'b0010_0110_00, + 10'b0010_0110_00, + 10'b0010_0110_00, + 10'b0010_0110_00, + 10'b0010_0110_00, + 10'b0010_0110_00, + 10'b0010_1010_00, + 10'b0010_1010_00, + 10'b0010_1010_00, + 10'b0010_1010_00, + 10'b0010_1010_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00 + }; + + lookup_high = { + // CP_RES_LFHF + 10'b0010_1111_00, + 10'b0100_1111_00, + 10'b0101_1011_00, + 10'b0111_0111_00, + 10'b1101_0111_00, + 10'b1110_1011_00, + 10'b1110_1101_00, + 10'b1111_0011_00, + 10'b1110_0101_00, + 10'b1111_0101_00, + 10'b1111_1001_00, + 10'b1101_0001_00, + 10'b1111_1001_00, + 10'b1111_1001_00, + 10'b1111_1001_00, + 10'b1111_1001_00, + 10'b1111_0101_00, + 10'b1111_0101_00, + 10'b1100_0001_00, + 10'b1100_0001_00, + 10'b1100_0001_00, + 10'b0101_1100_00, + 10'b0101_1100_00, + 10'b0101_1100_00, + 10'b0101_1100_00, + 10'b0011_0100_00, + 10'b0011_0100_00, + 10'b0011_0100_00, + 10'b0011_0100_00, + 10'b0011_0100_00, + 10'b0011_0100_00, + 10'b0011_0100_00, + 10'b0011_0100_00, + 10'b0011_0100_00, + 10'b0011_0100_00, + 10'b0011_0100_00, + 10'b0011_0100_00, + 10'b0011_0100_00, + 10'b0011_0100_00, + 10'b0011_0100_00, + 10'b0011_0100_00, + 10'b0010_1000_00, + 10'b0010_1000_00, + 10'b0010_1000_00, + 10'b0010_1000_00, + 10'b0010_1000_00, + 10'b0111_0001_00, + 10'b0111_0001_00, + 10'b0100_1100_00, + 10'b0100_1100_00, + 10'b0100_1100_00, + 10'b0100_1100_00, + 10'b0110_0001_00, + 10'b0110_0001_00, + 10'b0101_0110_00, + 10'b0101_0110_00, + 10'b0101_0110_00, + 10'b0010_0100_00, + 10'b0010_0100_00, + 10'b0010_0100_00, + 10'b0010_0100_00, + 10'b0100_1010_00, + 10'b0011_1100_00, + 10'b0011_1100_00 + }; + + // Set lookup_entry with the explicit bits from lookup with a part select + if(BANDWIDTH == "LOW") begin + // Low Bandwidth + mmcm_pll_filter_lookup = lookup_low[ ((64-divide)*10) +: 10]; + end else begin + // High or optimized bandwidth + mmcm_pll_filter_lookup = lookup_high[ ((64-divide)*10) +: 10]; + end + + `ifdef DEBUG + $display("filter_lookup: %b", mmcm_pll_filter_lookup); + `endif + end +endfunction + +// This function takes in the divide, phase, and duty cycle +// setting to calculate the upper and lower counter registers. +function [37:0] mmcm_pll_count_calc + ( + input [7:0] divide, // Max divide is 128 + input signed [31:0] phase, + input [31:0] duty_cycle // Multiplied by 100,000 + ); + + reg [13:0] div_calc; + reg [16:0] phase_calc; + + begin + `ifdef DEBUG + $display("mmcm_pll_count_calc- divide:%h, phase:%d, duty_cycle:%d", + divide, phase, duty_cycle); + `endif + + // w_edge[13], no_count[12], high_time[11:6], low_time[5:0] + div_calc = mmcm_pll_divider(divide, duty_cycle); + // mx[10:9], pm[8:6], dt[5:0] + phase_calc = mmcm_pll_phase(divide, phase); + + // Return value is the upper and lower address of counter + // Upper address is: + // RESERVED [31:26] + // MX [25:24] + // EDGE [23] + // NOCOUNT [22] + // DELAY_TIME [21:16] + // Lower Address is: + // PHASE_MUX [15:13] + // RESERVED [12] + // HIGH_TIME [11:6] + // LOW_TIME [5:0] + + `ifdef DEBUG + $display("div:%d dc:%d phase:%d ht:%d lt:%d ed:%d nc:%d mx:%d dt:%d pm:%d", + divide, duty_cycle, phase, div_calc[11:6], div_calc[5:0], + div_calc[13], div_calc[12], + phase_calc[16:15], phase_calc[5:0], phase_calc[14:12]); + `endif + + mmcm_pll_count_calc = + { + // Upper Address + 6'h00, phase_calc[10:9], div_calc[13:12], phase_calc[5:0], + // Lower Address + phase_calc[8:6], 1'b0, div_calc[11:0] + }; + end +endfunction + + +// This function takes in the divide, phase, and duty cycle +// setting to calculate the upper and lower counter registers. +// for fractional multiply/divide functions. +// +// +function [37:0] mmcm_frac_count_calc + ( + input [7:0] divide, // Max divide is 128 + input signed [31:0] phase, + input [31:0] duty_cycle, // Multiplied by 1,000 + input [9:0] frac // Multiplied by 1000 + ); + + //Required for fractional divide calculations + reg [7:0] lt_frac; + reg [7:0] ht_frac; + + reg /*[7:0]*/ wf_fall_frac; + reg /*[7:0]*/ wf_rise_frac; + + reg [31:0] a; + reg [7:0] pm_rise_frac_filtered ; + reg [7:0] pm_fall_frac_filtered ; + reg [7:0] clkout0_divide_int; + reg [2:0] clkout0_divide_frac; + reg [7:0] even_part_high; + reg [7:0] even_part_low; + + reg [7:0] odd; + reg [7:0] odd_and_frac; + + reg [7:0] pm_fall; + reg [7:0] pm_rise; + reg [7:0] dt; + reg [7:0] dt_int; + reg [63:0] dt_calc; + + reg [7:0] pm_rise_frac; + reg [7:0] pm_fall_frac; + + reg [31:0] a_per_in_octets; + reg [31:0] a_phase_in_cycles; + + parameter precision = 0.125; + + reg [31:0] phase_fixed; // changed to 31:0 from 32:1 jt 5/2/11 + reg [31: 0] phase_pos; + reg [31: 0] phase_vco; + reg [31:0] temp;// changed to 31:0 from 32:1 jt 5/2/11 + reg [13:0] div_calc; + reg [16:0] phase_calc; + + begin + `ifdef DEBUG + $display("mmcm_frac_count_calc- divide:%h, phase:%d, duty_cycle:%d", + divide, phase, duty_cycle); + `endif + + //convert phase to fixed + if ((phase < -360000) || (phase > 360000)) begin +`ifndef SYNTHESIS + $display("ERROR: phase of $phase is not between -360000 and 360000"); + `endif + $finish; + end + + + // Return value is + // Transfer data + // RESERVED [37:36] + // FRAC_TIME [35:33] + // FRAC_WF_FALL [32] + // Upper address is: + // RESERVED [31:26] + // MX [25:24] + // EDGE [23] + // NOCOUNT [22] + // DELAY_TIME [21:16] + // Lower Address is: + // PHASE_MUX [15:13] + // RESERVED [12] + // HIGH_TIME [11:6] + // LOW_TIME [5:0] + + + + clkout0_divide_frac = frac / 125; + clkout0_divide_int = divide; + + even_part_high = clkout0_divide_int >> 1;//$rtoi(clkout0_divide_int / 2); + even_part_low = even_part_high; + + odd = clkout0_divide_int - even_part_high - even_part_low; + odd_and_frac = (8*odd) + clkout0_divide_frac; + + lt_frac = even_part_high - (odd_and_frac <= 9);//IF(odd_and_frac>9,even_part_high, even_part_high - 1) + ht_frac = even_part_low - (odd_and_frac <= 8);//IF(odd_and_frac>8,even_part_low, even_part_low- 1) + + pm_fall = {odd[6:0],2'b00} + {6'h00, clkout0_divide_frac[2:1]}; // using >> instead of clkout0_divide_frac / 2 + pm_rise = 0; //0 + + wf_fall_frac = ((odd_and_frac >=2) && (odd_and_frac <=9)) || ((clkout0_divide_frac == 1) && (clkout0_divide_int == 2));//CRS610807 + wf_rise_frac = (odd_and_frac >=1) && (odd_and_frac <=8);//IF(odd_and_frac>=1,IF(odd_and_frac <= 8,1,0),0) + + + + //Calculate phase in fractional cycles + a_per_in_octets = (8 * divide) + (frac / 125) ; + a_phase_in_cycles = (phase+10) * a_per_in_octets / 360000 ;//Adding 1 due to rounding errors + pm_rise_frac = (a_phase_in_cycles[7:0] ==8'h00)?8'h00:a_phase_in_cycles[7:0] - {a_phase_in_cycles[7:3],3'b000}; + + dt_calc = ((phase+10) * a_per_in_octets / 8 )/360000 ;//TRUNC(phase* divide / 360); //or_simply (a_per_in_octets / 8) + dt = dt_calc[7:0]; + + pm_rise_frac_filtered = (pm_rise_frac >=8) ? (pm_rise_frac ) - 8: pm_rise_frac ; //((phase_fixed * (divide + frac / 1000)) / 360) - {pm_rise_frac[7:3],3'b000};//$rtoi(clkout0_phase * clkout0_divide / 45);//a; + + dt_int = dt + (& pm_rise_frac[7:4]); //IF(pm_rise_overwriting>7,dt+1,dt) + pm_fall_frac = pm_fall + pm_rise_frac; + pm_fall_frac_filtered = pm_fall + pm_rise_frac - {pm_fall_frac[7:3], 3'b000}; + + div_calc = mmcm_pll_divider(divide, duty_cycle); //Use to determine edge[7], no count[6] + phase_calc = mmcm_pll_phase(divide, phase);// returns{mx[1:0], phase_mux[2:0], delay_time[5:0]} + + mmcm_frac_count_calc[37:0] = + { 2'b00, pm_fall_frac_filtered[2:0], wf_fall_frac, + 1'b0, clkout0_divide_frac[2:0], 1'b1, wf_rise_frac, phase_calc[10:9], div_calc[13:12], dt[5:0], + pm_rise_frac_filtered[2], pm_rise_frac_filtered[1], pm_rise_frac_filtered[0], 1'b0, ht_frac[5:0], lt_frac[5:0] + } ; + + `ifdef DEBUG + $display("-%d.%d p%d>> :DADDR_9_15 frac30to28.frac_en.wf_r_frac.dt:%b%d%d_%b:DADDR_7_13 pm_f_frac_filtered_29to27.wf_f_frac_26:%b%d:DADDR_8_14.pm_r_frac_filt_15to13.ht_frac.lt_frac:%b%b%b:", divide, frac, phase, clkout0_divide_frac, 1, wf_rise_frac, dt, pm_fall_frac_filtered, wf_fall_frac, pm_rise_frac_filtered, ht_frac, lt_frac); + `endif + + end +endfunction + diff --git a/proj/AudioProc.ip_user_files/ipstatic/mmcm_pll_drp_func_7s_pll.vh b/proj/AudioProc.ip_user_files/ipstatic/mmcm_pll_drp_func_7s_pll.vh new file mode 100755 index 0000000..b662a3e --- /dev/null +++ b/proj/AudioProc.ip_user_files/ipstatic/mmcm_pll_drp_func_7s_pll.vh @@ -0,0 +1,542 @@ +// (c) Copyright 2009-2010, 2023 Advanced Micro Devices, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of AMD and is protected under U.S. and international copyright +// and other intellectual property laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// AMD, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND AMD HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) AMD shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or AMD had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// AMD products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of AMD products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +//////////////////////////////////////////////////////////// +// +/////////////////////////////////////////////////////////////////////////////// + +// These are user functions that should not be modified. Changes to the defines +// or code within the functions may alter the accuracy of the calculations. + +// Define debug to provide extra messages durring elaboration +//`define DEBUG 1 + +// FRAC_PRECISION describes the width of the fractional portion of the fixed +// point numbers. These should not be modified, they are for development +// only +`define FRAC_PRECISION 10 +// FIXED_WIDTH describes the total size for fixed point calculations(int+frac). +// Warning: L.50 and below will not calculate properly with FIXED_WIDTHs +// greater than 32 +`define FIXED_WIDTH 32 + +// This function takes a fixed point number and rounds it to the nearest +// fractional precision bit. +function [`FIXED_WIDTH:1] round_frac + ( + // Input is (FIXED_WIDTH-FRAC_PRECISION).FRAC_PRECISION fixed point number + input [`FIXED_WIDTH:1] decimal, + + // This describes the precision of the fraction, for example a value + // of 1 would modify the fractional so that instead of being a .16 + // fractional, it would be a .1 (rounded to the nearest 0.5 in turn) + input [`FIXED_WIDTH:1] precision + ); + + begin + +`ifdef DEBUG + $display("round_frac - decimal: %h, precision: %h", decimal, precision); +`endif + // If the fractional precision bit is high then round up + if( decimal[(`FRAC_PRECISION-precision)] == 1'b1) begin + round_frac = decimal + (1'b1 << (`FRAC_PRECISION-precision)); + end else begin + round_frac = decimal; + end +`ifdef DEBUG + $display("round_frac: %h", round_frac); +`endif + end +endfunction + +// This function calculates high_time, low_time, w_edge, and no_count +// of a non-fractional counter based on the divide and duty cycle +// +// NOTE: high_time and low_time are returned as integers between 0 and 63 +// inclusive. 64 should equal 6'b000000 (in other words it is okay to +// ignore the overflow) +function [13:0] mmcm_pll_divider + ( + input [7:0] divide, // Max divide is 128 + input [31:0] duty_cycle // Duty cycle is multiplied by 100,000 + ); + + reg [`FIXED_WIDTH:1] duty_cycle_fix; + + // High/Low time is initially calculated with a wider integer to prevent a + // calculation error when it overflows to 64. + reg [6:0] high_time; + reg [6:0] low_time; + reg w_edge; + reg no_count; + + reg [`FIXED_WIDTH:1] temp; + + begin + // Duty Cycle must be between 0 and 1,000 + if(duty_cycle <=0 || duty_cycle >= 100000) begin +`ifndef SYNTHESIS + $display("ERROR: duty_cycle: %d is invalid", duty_cycle); + `endif + $finish; + end + + // Convert to FIXED_WIDTH-FRAC_PRECISION.FRAC_PRECISION fixed point + duty_cycle_fix = (duty_cycle << `FRAC_PRECISION) / 100_000; + +`ifdef DEBUG + $display("duty_cycle_fix: %h", duty_cycle_fix); +`endif + + // If the divide is 1 nothing needs to be set except the no_count bit. + // Other values are dummies + if(divide == 7'h01) begin + high_time = 7'h01; + w_edge = 1'b0; + low_time = 7'h01; + no_count = 1'b1; + end else begin + temp = round_frac(duty_cycle_fix*divide, 1); + + // comes from above round_frac + high_time = temp[`FRAC_PRECISION+7:`FRAC_PRECISION+1]; + // If the duty cycle * divide rounded is .5 or greater then this bit + // is set. + w_edge = temp[`FRAC_PRECISION]; // comes from round_frac + + // If the high time comes out to 0, it needs to be set to at least 1 + // and w_edge set to 0 + if(high_time == 7'h00) begin + high_time = 7'h01; + w_edge = 1'b0; + end + + if(high_time == divide) begin + high_time = divide - 1; + w_edge = 1'b1; + end + + // Calculate low_time based on the divide setting and set no_count to + // 0 as it is only used when divide is 1. + low_time = divide - high_time; + no_count = 1'b0; + end + + // Set the return value. + mmcm_pll_divider = {w_edge,no_count,high_time[5:0],low_time[5:0]}; + end +endfunction + +// This function calculates mx, delay_time, and phase_mux +// of a non-fractional counter based on the divide and phase +// +// NOTE: The only valid value for the MX bits is 2'b00 to ensure the coarse mux +// is used. +function [10:0] mmcm_pll_phase + ( + // divide must be an integer (use fractional if not) + // assumed that divide already checked to be valid + input [7:0] divide, // Max divide is 128 + + // Phase is given in degrees (-360,000 to 360,000) + input signed [31:0] phase + ); + + reg [`FIXED_WIDTH:1] phase_in_cycles; + reg [`FIXED_WIDTH:1] phase_fixed; + reg [1:0] mx; + reg [5:0] delay_time; + reg [2:0] phase_mux; + + reg [`FIXED_WIDTH:1] temp; + + begin +`ifdef DEBUG + $display("mmcm_pll_phase-divide:%d,phase:%d", + divide, phase); +`endif + + if ((phase < -360000) || (phase > 360000)) begin +`ifndef SYNTHESIS + $display("ERROR: phase of $phase is not between -360000 and 360000"); + `endif + $finish; + end + + // If phase is less than 0, convert it to a positive phase shift + // Convert to (FIXED_WIDTH-FRAC_PRECISION).FRAC_PRECISION fixed point + if(phase < 0) begin + phase_fixed = ( (phase + 360000) << `FRAC_PRECISION ) / 1000; + end else begin + phase_fixed = ( phase << `FRAC_PRECISION ) / 1000; + end + + // Put phase in terms of decimal number of vco clock cycles + phase_in_cycles = ( phase_fixed * divide ) / 360; + +`ifdef DEBUG + $display("phase_in_cycles: %h", phase_in_cycles); +`endif + + + temp = round_frac(phase_in_cycles, 3); + + // set mx to 2'b00 that the phase mux from the VCO is enabled + mx = 2'b00; + phase_mux = temp[`FRAC_PRECISION:`FRAC_PRECISION-2]; + delay_time = temp[`FRAC_PRECISION+6:`FRAC_PRECISION+1]; + +`ifdef DEBUG + $display("temp: %h", temp); +`endif + + // Setup the return value + mmcm_pll_phase={mx, phase_mux, delay_time}; + end +endfunction + +// This function takes the divide value and outputs the necessary lock values +function [39:0] mmcm_pll_lock_lookup + ( + input [6:0] divide // Max divide is 64 + ); + + reg [2559:0] lookup; + + begin + lookup = { + // This table is composed of: + // LockRefDly_LockFBDly_LockCnt_LockSatHigh_UnlockCnt + 40'b00110_00110_1111101000_1111101001_0000000001, + 40'b00110_00110_1111101000_1111101001_0000000001, + 40'b01000_01000_1111101000_1111101001_0000000001, + 40'b01011_01011_1111101000_1111101001_0000000001, + 40'b01110_01110_1111101000_1111101001_0000000001, + 40'b10001_10001_1111101000_1111101001_0000000001, + 40'b10011_10011_1111101000_1111101001_0000000001, + 40'b10110_10110_1111101000_1111101001_0000000001, + 40'b11001_11001_1111101000_1111101001_0000000001, + 40'b11100_11100_1111101000_1111101001_0000000001, + 40'b11111_11111_1110000100_1111101001_0000000001, + 40'b11111_11111_1100111001_1111101001_0000000001, + 40'b11111_11111_1011101110_1111101001_0000000001, + 40'b11111_11111_1010111100_1111101001_0000000001, + 40'b11111_11111_1010001010_1111101001_0000000001, + 40'b11111_11111_1001110001_1111101001_0000000001, + 40'b11111_11111_1000111111_1111101001_0000000001, + 40'b11111_11111_1000100110_1111101001_0000000001, + 40'b11111_11111_1000001101_1111101001_0000000001, + 40'b11111_11111_0111110100_1111101001_0000000001, + 40'b11111_11111_0111011011_1111101001_0000000001, + 40'b11111_11111_0111000010_1111101001_0000000001, + 40'b11111_11111_0110101001_1111101001_0000000001, + 40'b11111_11111_0110010000_1111101001_0000000001, + 40'b11111_11111_0110010000_1111101001_0000000001, + 40'b11111_11111_0101110111_1111101001_0000000001, + 40'b11111_11111_0101011110_1111101001_0000000001, + 40'b11111_11111_0101011110_1111101001_0000000001, + 40'b11111_11111_0101000101_1111101001_0000000001, + 40'b11111_11111_0101000101_1111101001_0000000001, + 40'b11111_11111_0100101100_1111101001_0000000001, + 40'b11111_11111_0100101100_1111101001_0000000001, + 40'b11111_11111_0100101100_1111101001_0000000001, + 40'b11111_11111_0100010011_1111101001_0000000001, + 40'b11111_11111_0100010011_1111101001_0000000001, + 40'b11111_11111_0100010011_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001 + }; + + // Set lookup_entry with the explicit bits from lookup with a part select + mmcm_pll_lock_lookup = lookup[ ((64-divide)*40) +: 40]; + `ifdef DEBUG + $display("lock_lookup: %b", mmcm_pll_lock_lookup); + `endif + end +endfunction + +// This function takes the divide value and the bandwidth setting of the PLL +// and outputs the digital filter settings necessary. +function [9:0] mmcm_pll_filter_lookup + ( + input [6:0] divide, // Max divide is 64 + input [8*9:0] BANDWIDTH + ); + + reg [639:0] lookup_low; + reg [639:0] lookup_high; + + reg [9:0] lookup_entry; + + begin + lookup_low = { + // CP_RES_LFHF + 10'b0010_1111_00, + 10'b0010_1111_00, + 10'b0010_0111_00, + 10'b0010_1101_00, + 10'b0010_0101_00, + 10'b0010_0101_00, + 10'b0010_1001_00, + 10'b0010_1110_00, + 10'b0010_1110_00, + 10'b0010_0001_00, + 10'b0010_0001_00, + 10'b0010_0110_00, + 10'b0010_0110_00, + 10'b0010_0110_00, + 10'b0010_0110_00, + 10'b0010_1010_00, + 10'b0010_1010_00, + 10'b0010_1010_00, + 10'b0010_1010_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0011_1100_00, + 10'b0011_1100_00, + 10'b0011_1100_00, + 10'b0011_1100_00, + 10'b0011_1100_00, + 10'b0011_1100_00, + 10'b0011_1100_00, + 10'b0010_0100_00, + 10'b0010_0100_00, + 10'b0010_0100_00, + 10'b0010_0100_00, + 10'b0010_0100_00, + 10'b0010_0100_00, + 10'b0010_0100_00, + 10'b0010_0100_00, + 10'b0010_0100_00, + 10'b0010_0100_00, + 10'b0010_0100_00, + 10'b0010_0100_00, + 10'b0010_0100_00, + 10'b0010_0100_00, + 10'b0010_0100_00, + 10'b0010_0100_00, + 10'b0010_0100_00 + }; + + lookup_high = { + // CP_RES_LFHF + 10'b0011_0111_00, + 10'b0011_0111_00, + 10'b0101_1111_00, + 10'b0111_1111_00, + 10'b0111_1011_00, + 10'b1101_0111_00, + 10'b1110_1011_00, + 10'b1110_1101_00, + 10'b1111_1101_00, + 10'b1111_0111_00, + 10'b1111_1011_00, + 10'b1111_1101_00, + 10'b1111_0011_00, + 10'b1110_0101_00, + 10'b1111_0101_00, + 10'b1111_0101_00, + 10'b1111_0101_00, + 10'b1111_0101_00, + 10'b0111_0110_00, + 10'b0111_0110_00, + 10'b0111_0110_00, + 10'b0111_0110_00, + 10'b0101_1100_00, + 10'b0101_1100_00, + 10'b0101_1100_00, + 10'b1100_0001_00, + 10'b1100_0001_00, + 10'b1100_0001_00, + 10'b1100_0001_00, + 10'b1100_0001_00, + 10'b1100_0001_00, + 10'b1100_0001_00, + 10'b1100_0001_00, + 10'b0100_0010_00, + 10'b0100_0010_00, + 10'b0100_0010_00, + 10'b0010_1000_00, + 10'b0010_1000_00, + 10'b0010_1000_00, + 10'b0011_0100_00, + 10'b0010_1000_00, + 10'b0010_1000_00, + 10'b0010_1000_00, + 10'b0010_1000_00, + 10'b0010_1000_00, + 10'b0010_1000_00, + 10'b0010_1000_00, + 10'b0010_1000_00, + 10'b0010_1000_00, + 10'b0010_1000_00, + 10'b0010_1000_00, + 10'b0010_1000_00, + 10'b0010_1000_00, + 10'b0100_1100_00, + 10'b0100_1100_00, + 10'b0100_1100_00, + 10'b0100_1100_00, + 10'b0100_1100_00, + 10'b0100_1100_00, + 10'b0100_1100_00, + 10'b0010_0100_00, + 10'b0010_0100_00, + 10'b0010_0100_00, + 10'b0010_0100_00 + }; + + // Set lookup_entry with the explicit bits from lookup with a part select + if(BANDWIDTH == "LOW") begin + // Low Bandwidth + mmcm_pll_filter_lookup = lookup_low[ ((64-divide)*10) +: 10]; + end else begin + // High or optimized bandwidth + mmcm_pll_filter_lookup = lookup_high[ ((64-divide)*10) +: 10]; + end + + `ifdef DEBUG + $display("filter_lookup: %b", mmcm_pll_filter_lookup); + `endif + end +endfunction + +// This function takes in the divide, phase, and duty cycle +// setting to calculate the upper and lower counter registers. +function [37:0] mmcm_pll_count_calc + ( + input [7:0] divide, // Max divide is 128 + input signed [31:0] phase, + input [31:0] duty_cycle // Multiplied by 100,000 + ); + + reg [13:0] div_calc; + reg [16:0] phase_calc; + + begin + `ifdef DEBUG + $display("mmcm_pll_count_calc- divide:%h, phase:%d, duty_cycle:%d", + divide, phase, duty_cycle); +`endif + + // w_edge[13], no_count[12], high_time[11:6], low_time[5:0] + div_calc = mmcm_pll_divider(divide, duty_cycle); + // mx[10:9], pm[8:6], dt[5:0] + phase_calc = mmcm_pll_phase(divide, phase); + + // Return value is the upper and lower address of counter + // Upper address is: + // RESERVED [31:26] + // MX [25:24] + // EDGE [23] + // NOCOUNT [22] + // DELAY_TIME [21:16] + // Lower Address is: + // PHASE_MUX [15:13] + // RESERVED [12] + // HIGH_TIME [11:6] + // LOW_TIME [5:0] + +`ifdef DEBUG + $display("div:%d dc:%d phase:%d ht:%d lt:%d ed:%d nc:%d mx:%d dt:%d pm:%d", + divide, duty_cycle, phase, div_calc[11:6], div_calc[5:0], + div_calc[13], div_calc[12], + phase_calc[16:15], phase_calc[5:0], phase_calc[14:12]); +`endif + + mmcm_pll_count_calc = + { + // Upper Address + 6'h00, phase_calc[10:9], div_calc[13:12], phase_calc[5:0], + // Lower Address + phase_calc[8:6], 1'b0, div_calc[11:0] + }; + end +endfunction diff --git a/proj/AudioProc.ip_user_files/ipstatic/mmcm_pll_drp_func_us_mmcm.vh b/proj/AudioProc.ip_user_files/ipstatic/mmcm_pll_drp_func_us_mmcm.vh new file mode 100755 index 0000000..154c81f --- /dev/null +++ b/proj/AudioProc.ip_user_files/ipstatic/mmcm_pll_drp_func_us_mmcm.vh @@ -0,0 +1,680 @@ +// (c) Copyright 2009-2010, 2023 Advanced Micro Devices, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of AMD and is protected under U.S. and international copyright +// and other intellectual property laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// AMD, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND AMD HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) AMD shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or AMD had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// AMD products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of AMD products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +//////////////////////////////////////////////////////////// +// +/////////////////////////////////////////////////////////////////////////////// + +// These are user functions that should not be modified. Changes to the defines +// or code within the functions may alter the accuracy of the calculations. + +// Define debug to provide extra messages durring elaboration +//`define DEBUG 1 + +// FRAC_PRECISION describes the width of the fractional portion of the fixed +// point numbers. These should not be modified, they are for development +// only +`define FRAC_PRECISION 10 +// FIXED_WIDTH describes the total size for fixed point calculations(int+frac). +// Warning: L.50 and below will not calculate properly with FIXED_WIDTHs +// greater than 32 +`define FIXED_WIDTH 32 + +// This function takes a fixed point number and rounds it to the nearest +// fractional precision bit. +function [`FIXED_WIDTH:1] round_frac + ( + // Input is (FIXED_WIDTH-FRAC_PRECISION).FRAC_PRECISION fixed point number + input [`FIXED_WIDTH:1] decimal, + + // This describes the precision of the fraction, for example a value + // of 1 would modify the fractional so that instead of being a .16 + // fractional, it would be a .1 (rounded to the nearest 0.5 in turn) + input [`FIXED_WIDTH:1] precision + ); + + begin + + `ifdef DEBUG + $display("round_frac - decimal: %h, precision: %h", decimal, precision); + `endif + // If the fractional precision bit is high then round up + if( decimal[(`FRAC_PRECISION-precision)] == 1'b1) begin + round_frac = decimal + (1'b1 << (`FRAC_PRECISION-precision)); + end else begin + round_frac = decimal; + end + `ifdef DEBUG + $display("round_frac: %h", round_frac); + `endif + end +endfunction + +// This function calculates high_time, low_time, w_edge, and no_count +// of a non-fractional counter based on the divide and duty cycle +// +// NOTE: high_time and low_time are returned as integers between 0 and 63 +// inclusive. 64 should equal 6'b000000 (in other words it is okay to +// ignore the overflow) +function [13:0] mmcm_pll_divider + ( + input [7:0] divide, // Max divide is 128 + input [31:0] duty_cycle // Duty cycle is multiplied by 100,000 + ); + + reg [`FIXED_WIDTH:1] duty_cycle_fix; + + // High/Low time is initially calculated with a wider integer to prevent a + // calculation error when it overflows to 64. + reg [6:0] high_time; + reg [6:0] low_time; + reg w_edge; + reg no_count; + + reg [`FIXED_WIDTH:1] temp; + + begin + // Duty Cycle must be between 0 and 1,000 + if(duty_cycle <=0 || duty_cycle >= 100000) begin +`ifndef SYNTHESIS + $display("ERROR: duty_cycle: %d is invalid", duty_cycle); + `endif + $finish; + end + + // Convert to FIXED_WIDTH-FRAC_PRECISION.FRAC_PRECISION fixed point + duty_cycle_fix = (duty_cycle << `FRAC_PRECISION) / 100_000; + + `ifdef DEBUG + $display("duty_cycle_fix: %h", duty_cycle_fix); + `endif + + // If the divide is 1 nothing needs to be set except the no_count bit. + // Other values are dummies + if(divide == 7'h01) begin + high_time = 7'h01; + w_edge = 1'b0; + low_time = 7'h01; + no_count = 1'b1; + end else begin + temp = round_frac(duty_cycle_fix*divide, 1); + + // comes from above round_frac + high_time = temp[`FRAC_PRECISION+7:`FRAC_PRECISION+1]; + // If the duty cycle * divide rounded is .5 or greater then this bit + // is set. + w_edge = temp[`FRAC_PRECISION]; // comes from round_frac + + // If the high time comes out to 0, it needs to be set to at least 1 + // and w_edge set to 0 + if(high_time == 7'h00) begin + high_time = 7'h01; + w_edge = 1'b0; + end + + if(high_time == divide) begin + high_time = divide - 1; + w_edge = 1'b1; + end + + // Calculate low_time based on the divide setting and set no_count to + // 0 as it is only used when divide is 1. + low_time = divide - high_time; + no_count = 1'b0; + end + + // Set the return value. + mmcm_pll_divider = {w_edge,no_count,high_time[5:0],low_time[5:0]}; + end +endfunction + +// This function calculates mx, delay_time, and phase_mux +// of a non-fractional counter based on the divide and phase +// +// NOTE: The only valid value for the MX bits is 2'b00 to ensure the coarse mux +// is used. +function [10:0] mmcm_pll_phase + ( + // divide must be an integer (use fractional if not) + // assumed that divide already checked to be valid + input [7:0] divide, // Max divide is 128 + + // Phase is given in degrees (-360,000 to 360,000) + input signed [31:0] phase + ); + + reg [`FIXED_WIDTH:1] phase_in_cycles; + reg [`FIXED_WIDTH:1] phase_fixed; + reg [1:0] mx; + reg [5:0] delay_time; + reg [2:0] phase_mux; + + reg [`FIXED_WIDTH:1] temp; + + begin +`ifdef DEBUG + $display("mmcm_pll_phase-divide:%d,phase:%d", + divide, phase); +`endif + + if ((phase < -360000) || (phase > 360000)) begin +`ifndef SYNTHESIS + $display("ERROR: phase of $phase is not between -360000 and 360000"); + `endif + $finish; + end + + // If phase is less than 0, convert it to a positive phase shift + // Convert to (FIXED_WIDTH-FRAC_PRECISION).FRAC_PRECISION fixed point + if(phase < 0) begin + phase_fixed = ( (phase + 360000) << `FRAC_PRECISION ) / 1000; + end else begin + phase_fixed = ( phase << `FRAC_PRECISION ) / 1000; + end + + // Put phase in terms of decimal number of vco clock cycles + phase_in_cycles = ( phase_fixed * divide ) / 360; + +`ifdef DEBUG + $display("phase_in_cycles: %h", phase_in_cycles); +`endif + + + temp = round_frac(phase_in_cycles, 3); + + // set mx to 2'b00 that the phase mux from the VCO is enabled + mx = 2'b00; + phase_mux = temp[`FRAC_PRECISION:`FRAC_PRECISION-2]; + delay_time = temp[`FRAC_PRECISION+6:`FRAC_PRECISION+1]; + + `ifdef DEBUG + $display("temp: %h", temp); + `endif + + // Setup the return value + mmcm_pll_phase={mx, phase_mux, delay_time}; + end +endfunction + +// This function takes the divide value and outputs the necessary lock values +function [39:0] mmcm_pll_lock_lookup + ( + input [6:0] divide // Max divide is 64 + ); + + reg [2559:0] lookup; + + begin + lookup = { + // This table is composed of: + // LockRefDly_LockFBDly_LockCnt_LockSatHigh_UnlockCnt + 40'b00110_00110_1111101000_1111101001_0000000001, + 40'b00110_00110_1111101000_1111101001_0000000001, + 40'b01000_01000_1111101000_1111101001_0000000001, + 40'b01011_01011_1111101000_1111101001_0000000001, + 40'b01110_01110_1111101000_1111101001_0000000001, + 40'b10001_10001_1111101000_1111101001_0000000001, + 40'b10011_10011_1111101000_1111101001_0000000001, + 40'b10110_10110_1111101000_1111101001_0000000001, + 40'b11001_11001_1111101000_1111101001_0000000001, + 40'b11100_11100_1111101000_1111101001_0000000001, + 40'b11111_11111_1110000100_1111101001_0000000001, + 40'b11111_11111_1100111001_1111101001_0000000001, + 40'b11111_11111_1011101110_1111101001_0000000001, + 40'b11111_11111_1010111100_1111101001_0000000001, + 40'b11111_11111_1010001010_1111101001_0000000001, + 40'b11111_11111_1001110001_1111101001_0000000001, + 40'b11111_11111_1000111111_1111101001_0000000001, + 40'b11111_11111_1000100110_1111101001_0000000001, + 40'b11111_11111_1000001101_1111101001_0000000001, + 40'b11111_11111_0111110100_1111101001_0000000001, + 40'b11111_11111_0111011011_1111101001_0000000001, + 40'b11111_11111_0111000010_1111101001_0000000001, + 40'b11111_11111_0110101001_1111101001_0000000001, + 40'b11111_11111_0110010000_1111101001_0000000001, + 40'b11111_11111_0110010000_1111101001_0000000001, + 40'b11111_11111_0101110111_1111101001_0000000001, + 40'b11111_11111_0101011110_1111101001_0000000001, + 40'b11111_11111_0101011110_1111101001_0000000001, + 40'b11111_11111_0101000101_1111101001_0000000001, + 40'b11111_11111_0101000101_1111101001_0000000001, + 40'b11111_11111_0100101100_1111101001_0000000001, + 40'b11111_11111_0100101100_1111101001_0000000001, + 40'b11111_11111_0100101100_1111101001_0000000001, + 40'b11111_11111_0100010011_1111101001_0000000001, + 40'b11111_11111_0100010011_1111101001_0000000001, + 40'b11111_11111_0100010011_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001 + }; + + // Set lookup_entry with the explicit bits from lookup with a part select + mmcm_pll_lock_lookup = lookup[ ((64-divide)*40) +: 40]; + `ifdef DEBUG + $display("lock_lookup: %b", mmcm_pll_lock_lookup); + `endif + end +endfunction + +// This function takes the divide value and the bandwidth setting of the MMCM +// and outputs the digital filter settings necessary. +function [9:0] mmcm_pll_filter_lookup + ( + input [6:0] divide, // Max divide is 64 + input [8*9:0] BANDWIDTH + ); + + reg [639:0] lookup_low; + reg [639:0] lookup_high; + + reg [9:0] lookup_entry; + + begin + lookup_low = { + // CP_RES_LFHF + 10'b0010_1111_11, + 10'b0010_1111_11, + 10'b0010_1111_11, + 10'b0010_1111_11, + 10'b0010_1111_11, + 10'b0010_1111_11, + 10'b0010_0111_11, + 10'b0010_0111_11, + 10'b0010_0111_11, + 10'b0010_1101_11, + 10'b0010_1101_11, + 10'b0010_1101_11, + 10'b0010_0011_11, + 10'b0010_0101_11, + 10'b0010_0101_11, + 10'b0010_0101_11, + 10'b0010_1001_11, + 10'b0010_1001_11, + 10'b0010_1110_11, + 10'b0010_1110_11, + 10'b0010_1110_11, + 10'b0010_1110_11, + 10'b0010_1110_11, + 10'b0010_1110_11, + 10'b0010_0001_11, + 10'b0010_0001_11, + 10'b0010_0001_11, + 10'b0010_0001_11, + 10'b0010_0001_11, + 10'b0010_0110_11, + 10'b0010_0110_11, + 10'b0010_0110_11, + 10'b0010_0110_11, + 10'b0010_0110_11, + 10'b0010_0110_11, + 10'b0010_0110_11, + 10'b0010_0110_11, + 10'b0010_0110_11, + 10'b0010_0110_11, + 10'b0010_1010_11, + 10'b0010_1010_11, + 10'b0010_1010_11, + 10'b0010_1010_11, + 10'b0010_1010_11, + 10'b0010_1010_11, + 10'b0010_1010_11, + 10'b0010_1010_11, + 10'b0010_1100_11, + 10'b0010_1100_11, + 10'b0010_1100_11, + 10'b0010_1100_11, + 10'b0010_1100_11, + 10'b0010_1100_11, + 10'b0010_1100_11, + 10'b0010_1100_11, + 10'b0010_1100_11, + 10'b0010_1100_11, + 10'b0010_1100_11, + 10'b0010_1100_11, + 10'b0010_1100_11, + 10'b0010_1100_11, + 10'b0010_1100_11, + 10'b0010_1100_11, + 10'b0010_1100_11 + }; + + lookup_high = { + // CP_RES_LFHF + 10'b0010_1111_11, + 10'b0010_1111_11, + 10'b0010_1011_11, + 10'b0011_1111_11, + 10'b0100_1111_11, + 10'b0100_1111_11, + 10'b0101_1111_11, + 10'b0110_1111_11, + 10'b0111_1111_11, + 10'b0111_1111_11, + 10'b1100_1111_11, + 10'b1101_1111_11, + 10'b1110_1111_11, + 10'b1111_1111_11, + 10'b1111_1111_11, + 10'b1110_0111_11, + 10'b1110_1011_11, + 10'b1111_0111_11, + 10'b1111_1011_11, + 10'b1111_1011_11, + 10'b1110_1101_11, + 10'b1111_1101_11, + 10'b1111_1101_11, + 10'b1111_0011_11, + 10'b1111_0011_11, + 10'b1111_0011_11, + 10'b1110_0101_11, + 10'b1110_0101_11, + 10'b1110_0101_11, + 10'b1111_0101_11, + 10'b1111_0101_11, + 10'b1111_0101_11, + 10'b1111_1001_11, + 10'b1111_1001_11, + 10'b1111_1001_11, + 10'b1111_1001_11, + 10'b1111_1001_11, + 10'b1110_1110_11, + 10'b1110_1110_11, + 10'b1110_1110_11, + 10'b1110_1110_11, + 10'b1111_1110_11, + 10'b1111_1110_11, + 10'b1111_1110_11, + 10'b1111_1110_11, + 10'b1111_1110_11, + 10'b1111_1110_11, + 10'b1111_1110_11, + 10'b1110_0001_11, + 10'b1110_0001_11, + 10'b1110_0001_11, + 10'b1110_0001_11, + 10'b1110_0001_11, + 10'b1100_0110_11, + 10'b1100_0110_11, + 10'b1100_0110_11, + 10'b1100_0110_11, + 10'b1100_0110_11, + 10'b1100_0110_11, + 10'b1100_0110_11, + 10'b1100_1010_11, + 10'b1100_1010_11, + 10'b1100_1010_11, + 10'b1100_1010_11 + }; + + // Set lookup_entry with the explicit bits from lookup with a part select + if(BANDWIDTH == "LOW") begin + // Low Bandwidth + mmcm_pll_filter_lookup = lookup_low[ ((64-divide)*10) +: 10]; + end else begin + // High or optimized bandwidth + mmcm_pll_filter_lookup = lookup_high[ ((64-divide)*10) +: 10]; + end + + `ifdef DEBUG + $display("filter_lookup: %b", mmcm_pll_filter_lookup); + `endif + end +endfunction + +// This function takes in the divide, phase, and duty cycle +// setting to calculate the upper and lower counter registers. +function [37:0] mmcm_pll_count_calc + ( + input [7:0] divide, // Max divide is 128 + input signed [31:0] phase, + input [31:0] duty_cycle // Multiplied by 100,000 + ); + + reg [13:0] div_calc; + reg [16:0] phase_calc; + + begin + `ifdef DEBUG + $display("mmcm_pll_count_calc- divide:%h, phase:%d, duty_cycle:%d", + divide, phase, duty_cycle); + `endif + + // w_edge[13], no_count[12], high_time[11:6], low_time[5:0] + div_calc = mmcm_pll_divider(divide, duty_cycle); + // mx[10:9], pm[8:6], dt[5:0] + phase_calc = mmcm_pll_phase(divide, phase); + + // Return value is the upper and lower address of counter + // Upper address is: + // RESERVED [31:26] + // MX [25:24] + // EDGE [23] + // NOCOUNT [22] + // DELAY_TIME [21:16] + // Lower Address is: + // PHASE_MUX [15:13] + // RESERVED [12] + // HIGH_TIME [11:6] + // LOW_TIME [5:0] + + `ifdef DEBUG + $display("div:%d dc:%d phase:%d ht:%d lt:%d ed:%d nc:%d mx:%d dt:%d pm:%d", + divide, duty_cycle, phase, div_calc[11:6], div_calc[5:0], + div_calc[13], div_calc[12], + phase_calc[16:15], phase_calc[5:0], phase_calc[14:12]); + `endif + + mmcm_pll_count_calc = + { + // Upper Address + 6'h00, phase_calc[10:9], div_calc[13:12], phase_calc[5:0], + // Lower Address + phase_calc[8:6], 1'b0, div_calc[11:0] + }; + end +endfunction + + +// This function takes in the divide, phase, and duty cycle +// setting to calculate the upper and lower counter registers. +// for fractional multiply/divide functions. +// +// +function [37:0] mmcm_frac_count_calc + ( + input [7:0] divide, // Max divide is 128 + input signed [31:0] phase, + input [31:0] duty_cycle, // Multiplied by 1,000 + input [9:0] frac // Multiplied by 1000 + ); + + //Required for fractional divide calculations + reg [7:0] lt_frac; + reg [7:0] ht_frac; + + reg /*[7:0]*/ wf_fall_frac; + reg /*[7:0]*/ wf_rise_frac; + + reg [31:0] a; + reg [7:0] pm_rise_frac_filtered ; + reg [7:0] pm_fall_frac_filtered ; + reg [7:0] clkout0_divide_int; + reg [2:0] clkout0_divide_frac; + reg [7:0] even_part_high; + reg [7:0] even_part_low; + + reg [7:0] odd; + reg [7:0] odd_and_frac; + + reg [7:0] pm_fall; + reg [7:0] pm_rise; + reg [7:0] dt; + reg [7:0] dt_int; + reg [63:0] dt_calc; + + reg [7:0] pm_rise_frac; + reg [7:0] pm_fall_frac; + + reg [31:0] a_per_in_octets; + reg [31:0] a_phase_in_cycles; + + parameter precision = 0.125; + + reg [31:0] phase_fixed; // changed to 31:0 from 32:1 jt 5/2/11 + reg [31: 0] phase_pos; + reg [31: 0] phase_vco; + reg [31:0] temp;// changed to 31:0 from 32:1 jt 5/2/11 + reg [13:0] div_calc; + reg [16:0] phase_calc; + + begin + `ifdef DEBUG + $display("mmcm_frac_count_calc- divide:%h, phase:%d, duty_cycle:%d", + divide, phase, duty_cycle); + `endif + + //convert phase to fixed + if ((phase < -360000) || (phase > 360000)) begin +`ifndef SYNTHESIS + $display("ERROR: phase of $phase is not between -360000 and 360000"); + `endif + $finish; + end + + + // Return value is + // Transfer data + // RESERVED [37:36] + // FRAC_TIME [35:33] + // FRAC_WF_FALL [32] + // Upper address is: + // RESERVED [31:26] + // MX [25:24] + // EDGE [23] + // NOCOUNT [22] + // DELAY_TIME [21:16] + // Lower Address is: + // PHASE_MUX [15:13] + // RESERVED [12] + // HIGH_TIME [11:6] + // LOW_TIME [5:0] + + + + clkout0_divide_frac = frac / 125; + clkout0_divide_int = divide; + + even_part_high = clkout0_divide_int >> 1;//$rtoi(clkout0_divide_int / 2); + even_part_low = even_part_high; + + odd = clkout0_divide_int - even_part_high - even_part_low; + odd_and_frac = (8*odd) + clkout0_divide_frac; + + lt_frac = even_part_high - (odd_and_frac <= 9);//IF(odd_and_frac>9,even_part_high, even_part_high - 1) + ht_frac = even_part_low - (odd_and_frac <= 8);//IF(odd_and_frac>8,even_part_low, even_part_low- 1) + + pm_fall = {odd[6:0],2'b00} + {6'h00, clkout0_divide_frac[2:1]}; // using >> instead of clkout0_divide_frac / 2 + pm_rise = 0; //0 + + wf_fall_frac = ((odd_and_frac >=2) && (odd_and_frac <=9)) || ((clkout0_divide_frac == 1) && (clkout0_divide_int == 2));//CRS610807 + wf_rise_frac = (odd_and_frac >=1) && (odd_and_frac <=8);//IF(odd_and_frac>=1,IF(odd_and_frac <= 8,1,0),0) + + + + //Calculate phase in fractional cycles + a_per_in_octets = (8 * divide) + (frac / 125) ; + a_phase_in_cycles = (phase+10) * a_per_in_octets / 360000 ;//Adding 1 due to rounding errors + pm_rise_frac = (a_phase_in_cycles[7:0] ==8'h00)?8'h00:a_phase_in_cycles[7:0] - {a_phase_in_cycles[7:3],3'b000}; + + dt_calc = ((phase+10) * a_per_in_octets / 8 )/360000 ;//TRUNC(phase* divide / 360); //or_simply (a_per_in_octets / 8) + dt = dt_calc[7:0]; + + pm_rise_frac_filtered = (pm_rise_frac >=8) ? (pm_rise_frac ) - 8: pm_rise_frac ; //((phase_fixed * (divide + frac / 1000)) / 360) - {pm_rise_frac[7:3],3'b000};//$rtoi(clkout0_phase * clkout0_divide / 45);//a; + + dt_int = dt + (& pm_rise_frac[7:4]); //IF(pm_rise_overwriting>7,dt+1,dt) + pm_fall_frac = pm_fall + pm_rise_frac; + pm_fall_frac_filtered = pm_fall + pm_rise_frac - {pm_fall_frac[7:3], 3'b000}; + + div_calc = mmcm_pll_divider(divide, duty_cycle); //Use to determine edge[7], no count[6] + phase_calc = mmcm_pll_phase(divide, phase);// returns{mx[1:0], phase_mux[2:0], delay_time[5:0]} + + mmcm_frac_count_calc[37:0] = + { 2'b00, pm_fall_frac_filtered[2:0], wf_fall_frac, + 1'b0, clkout0_divide_frac[2:0], 1'b1, wf_rise_frac, phase_calc[10:9], div_calc[13:12], dt[5:0], + pm_rise_frac_filtered[2], pm_rise_frac_filtered[1], pm_rise_frac_filtered[0], 1'b0, ht_frac[5:0], lt_frac[5:0] + } ; + + `ifdef DEBUG + $display("-%d.%d p%d>> :DADDR_9_15 frac30to28.frac_en.wf_r_frac.dt:%b%d%d_%b:DADDR_7_13 pm_f_frac_filtered_29to27.wf_f_frac_26:%b%d:DADDR_8_14.pm_r_frac_filt_15to13.ht_frac.lt_frac:%b%b%b:", divide, frac, phase, clkout0_divide_frac, 1, wf_rise_frac, dt, pm_fall_frac_filtered, wf_fall_frac, pm_rise_frac_filtered, ht_frac, lt_frac); + `endif + + end +endfunction + diff --git a/proj/AudioProc.ip_user_files/ipstatic/mmcm_pll_drp_func_us_pll.vh b/proj/AudioProc.ip_user_files/ipstatic/mmcm_pll_drp_func_us_pll.vh new file mode 100755 index 0000000..ff369d1 --- /dev/null +++ b/proj/AudioProc.ip_user_files/ipstatic/mmcm_pll_drp_func_us_pll.vh @@ -0,0 +1,555 @@ +/////////////////////////////////////////////////////////////////////////////// +// +// Company: AMD +// Engineer: Jim Tatsukawa +// Date: 6/15/2015 +// Design Name: PLLE3 DRP +// Module Name: plle3_drp_func.h +// Version: 1.10 +// Target Devices: UltraScale Architecture +// Tool versions: 2015.1 +// Description: This header provides the functions necessary to +// calculate the DRP register values for the V6 PLL. +// +// Revision Notes: 8/11 - PLLE3 updated for PLLE3 file 4564419 +// Revision Notes: 6/15 - pll_filter_lookup fixed for max M of 19 +// PM_Rise bits have been removed for PLLE3 +// +// (c) Copyright 2009-2010, 2023 Advanced Micro Devices, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of AMD and is protected under U.S. and international copyright +// and other intellectual property laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// AMD, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND AMD HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) AMD shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or AMD had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// AMD products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of AMD products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +//////////////////////////////////////////////////////////// +// +/////////////////////////////////////////////////////////////////////////////// + +// These are user functions that should not be modified. Changes to the defines +// or code within the functions may alter the accuracy of the calculations. + +// Define debug to provide extra messages durring elaboration +//`define DEBUG 1 + +// FRAC_PRECISION describes the width of the fractional portion of the fixed +// point numbers. These should not be modified, they are for development +// only +`define FRAC_PRECISION 10 +// FIXED_WIDTH describes the total size for fixed point calculations(int+frac). +// Warning: L.50 and below will not calculate properly with FIXED_WIDTHs +// greater than 32 +`define FIXED_WIDTH 32 + +// This function takes a fixed point number and rounds it to the nearest +// fractional precision bit. +function [`FIXED_WIDTH:1] round_frac + ( + // Input is (FIXED_WIDTH-FRAC_PRECISION).FRAC_PRECISION fixed point number + input [`FIXED_WIDTH:1] decimal, + + // This describes the precision of the fraction, for example a value + // of 1 would modify the fractional so that instead of being a .16 + // fractional, it would be a .1 (rounded to the nearest 0.5 in turn) + input [`FIXED_WIDTH:1] precision + ); + + begin + + `ifdef DEBUG + $display("round_frac - decimal: %h, precision: %h", decimal, precision); + `endif + // If the fractional precision bit is high then round up + if( decimal[(`FRAC_PRECISION-precision)] == 1'b1) begin + round_frac = decimal + (1'b1 << (`FRAC_PRECISION-precision)); + end else begin + round_frac = decimal; + end + `ifdef DEBUG + $display("round_frac: %h", round_frac); + `endif + end +endfunction + +// This function calculates high_time, low_time, w_edge, and no_count +// of a non-fractional counter based on the divide and duty cycle +// +// NOTE: high_time and low_time are returned as integers between 0 and 63 +// inclusive. 64 should equal 6'b000000 (in other words it is okay to +// ignore the overflow) +function [13:0] mmcm_pll_divider + ( + input [7:0] divide, // Max divide is 128 + input [31:0] duty_cycle // Duty cycle is multiplied by 100,000 + ); + + reg [`FIXED_WIDTH:1] duty_cycle_fix; + + // High/Low time is initially calculated with a wider integer to prevent a + // calculation error when it overflows to 64. + reg [6:0] high_time; + reg [6:0] low_time; + reg w_edge; + reg no_count; + + reg [`FIXED_WIDTH:1] temp; + + begin + // Duty Cycle must be between 0 and 1,000 + if(duty_cycle <=0 || duty_cycle >= 100000) begin +`ifndef SYNTHESIS + $display("ERROR: duty_cycle: %d is invalid", duty_cycle); + `endif + $finish; + end + + // Convert to FIXED_WIDTH-FRAC_PRECISION.FRAC_PRECISION fixed point + duty_cycle_fix = (duty_cycle << `FRAC_PRECISION) / 100_000; + + `ifdef DEBUG + $display("duty_cycle_fix: %h", duty_cycle_fix); + `endif + + // If the divide is 1 nothing needs to be set except the no_count bit. + // Other values are dummies + if(divide == 7'h01) begin + high_time = 7'h01; + w_edge = 1'b0; + low_time = 7'h01; + no_count = 1'b1; + end else begin + temp = round_frac(duty_cycle_fix*divide, 1); + + // comes from above round_frac + high_time = temp[`FRAC_PRECISION+7:`FRAC_PRECISION+1]; + // If the duty cycle * divide rounded is .5 or greater then this bit + // is set. + w_edge = temp[`FRAC_PRECISION]; // comes from round_frac + + // If the high time comes out to 0, it needs to be set to at least 1 + // and w_edge set to 0 + if(high_time == 7'h00) begin + high_time = 7'h01; + w_edge = 1'b0; + end + + if(high_time == divide) begin + high_time = divide - 1; + w_edge = 1'b1; + end + + // Calculate low_time based on the divide setting and set no_count to + // 0 as it is only used when divide is 1. + low_time = divide - high_time; + no_count = 1'b0; + end + + // Set the return value. + mmcm_pll_divider = {w_edge,no_count,high_time[5:0],low_time[5:0]}; + end +endfunction + +// This function calculates mx, delay_time, and phase_mux +// of a non-fractional counter based on the divide and phase +// +// NOTE: The only valid value for the MX bits is 2'b00 to ensure the coarse mux +// is used. +function [10:0] mmcm_pll_phase + ( + // divide must be an integer (use fractional if not) + // assumed that divide already checked to be valid + input [7:0] divide, // Max divide is 128 + + // Phase is given in degrees (-360,000 to 360,000) + input signed [31:0] phase + ); + + reg [`FIXED_WIDTH:1] phase_in_cycles; + reg [`FIXED_WIDTH:1] phase_fixed; + reg [1:0] mx; + reg [5:0] delay_time; + reg [2:0] phase_mux; + + reg [`FIXED_WIDTH:1] temp; + + begin +`ifdef DEBUG + $display("mmcm_pll_phase-divide:%d,phase:%d", + divide, phase); +`endif + + if ((phase < -360000) || (phase > 360000)) begin +`ifndef SYNTHESIS + $display("ERROR: phase of $phase is not between -360000 and 360000"); + `endif + $finish; + end + + // If phase is less than 0, convert it to a positive phase shift + // Convert to (FIXED_WIDTH-FRAC_PRECISION).FRAC_PRECISION fixed point + if(phase < 0) begin + phase_fixed = ( (phase + 360000) << `FRAC_PRECISION ) / 1000; + end else begin + phase_fixed = ( phase << `FRAC_PRECISION ) / 1000; + end + + // Put phase in terms of decimal number of vco clock cycles + phase_in_cycles = ( phase_fixed * divide ) / 360; + +`ifdef DEBUG + $display("phase_in_cycles: %h", phase_in_cycles); +`endif + + + temp = round_frac(phase_in_cycles, 3); + + // set mx to 2'b00 that the phase mux from the VCO is enabled + mx = 2'b00; + phase_mux = temp[`FRAC_PRECISION:`FRAC_PRECISION-2]; + delay_time = temp[`FRAC_PRECISION+6:`FRAC_PRECISION+1]; + + `ifdef DEBUG + $display("temp: %h", temp); + `endif + + // Setup the return value + mmcm_pll_phase={mx, phase_mux, delay_time}; + end +endfunction + +// This function takes the divide value and outputs the necessary lock values +function [39:0] mmcm_pll_lock_lookup + ( + input [6:0] divide // Max divide is 64 + ); + + reg [759:0] lookup; + + begin + lookup = { + // This table is composed of: + // LockRefDly_LockFBDly_LockCnt_LockSatHigh_UnlockCnt + 40'b00110_00110_1111101000_1111101001_0000000001, //1 + 40'b00110_00110_1111101000_1111101001_0000000001, //2 + 40'b01000_01000_1111101000_1111101001_0000000001, //3 + 40'b01011_01011_1111101000_1111101001_0000000001, //4 + 40'b01110_01110_1111101000_1111101001_0000000001, //5 + 40'b10001_10001_1111101000_1111101001_0000000001, //6 + 40'b10011_10011_1111101000_1111101001_0000000001, //7 + 40'b10110_10110_1111101000_1111101001_0000000001, //8 + 40'b11001_11001_1111101000_1111101001_0000000001, //9 + 40'b11100_11100_1111101000_1111101001_0000000001, //10 + 40'b11111_11111_1110000100_1111101001_0000000001, //11 + 40'b11111_11111_1100111001_1111101001_0000000001, //12 + 40'b11111_11111_1011101110_1111101001_0000000001, //13 + 40'b11111_11111_1010111100_1111101001_0000000001, //14 + 40'b11111_11111_1010001010_1111101001_0000000001, //15 + 40'b11111_11111_1001110001_1111101001_0000000001, //16 + 40'b11111_11111_1000111111_1111101001_0000000001, //17 + 40'b11111_11111_1000100110_1111101001_0000000001, //18 + 40'b11111_11111_1000001101_1111101001_0000000001 //19 + + }; + + // Set lookup_entry with the explicit bits from lookup with a part select + mmcm_pll_lock_lookup = lookup[ ((19-divide)*40) +: 40]; + `ifdef DEBUG + $display("lock_lookup: %b", mmcm_pll_lock_lookup); + `endif + end +endfunction + +// This function takes the divide value and the bandwidth setting of the PLL +// and outputs the digital filter settings necessary. Removing bandwidth setting for PLLE3. +function [9:0] mmcm_pll_filter_lookup + ( + input [6:0] divide // Max divide is 19 + ); + + reg [639:0] lookup; + reg [9:0] lookup_entry; + + begin + + lookup = { + // CP_RES_LFHF + 10'b0010_1111_01, //1 + 10'b0010_0011_11, //2 + 10'b0011_0011_11, //3 + 10'b0010_0001_11, //4 + 10'b0010_0110_11, //5 + 10'b0010_1010_11, //6 + 10'b0010_1010_11, //7 + 10'b0011_0110_11, //8 + 10'b0010_1100_11, //9 + 10'b0010_1100_11, //10 + 10'b0010_1100_11, //11 + 10'b0010_0010_11, //12 + 10'b0011_1100_11, //13 + 10'b0011_1100_11, //14 + 10'b0011_1100_11, //15 + 10'b0011_1100_11, //16 + 10'b0011_0010_11, //17 + 10'b0011_0010_11, //18 + 10'b0011_0010_11 //19 + }; + + mmcm_pll_filter_lookup = lookup [ ((19-divide)*10) +: 10]; + + `ifdef DEBUG + $display("filter_lookup: %b", mmcm_pll_filter_lookup); + `endif + end +endfunction + +// This function set the CLKOUTPHY divide settings to match +// the desired CLKOUTPHY_MODE setting. To create VCO_X2, then +// the CLKOUTPHY will be set to 2'b00 since the VCO is internally +// doubled and 2'b00 will represent divide by 1. Similarly "VCO" // will need to divide the doubled clock VCO clock frequency by // 2 therefore 2'b01 will match a divide by 2.And VCO_HALF will // need to divide the doubled VCO by 4, therefore 2'b10 +function [9:0] mmcm_pll_clkoutphy_calc + ( + input [8*9:0] CLKOUTPHY_MODE + ); + + if(CLKOUTPHY_MODE == "VCO_X2") begin + mmcm_pll_clkoutphy_calc= 2'b00; + end else if(CLKOUTPHY_MODE == "VCO") begin + mmcm_pll_clkoutphy_calc= 2'b01; + end else if(CLKOUTPHY_MODE == "CLKIN") begin + mmcm_pll_clkoutphy_calc= 2'b11; + end else begin // Assume "VCO_HALF" + mmcm_pll_clkoutphy_calc= 2'b10; + end + +endfunction + + +// This function takes in the divide, phase, and duty cycle +// setting to calculate the upper and lower counter registers. +function [37:0] mmcm_pll_count_calc + ( + input [7:0] divide, // Max divide is 128 + input signed [31:0] phase, + input [31:0] duty_cycle // Multiplied by 100,000 + ); + + reg [13:0] div_calc; + reg [16:0] phase_calc; + + begin + `ifdef DEBUG + $display("mmcm_pll_count_calc- divide:%h, phase:%d, duty_cycle:%d", + divide, phase, duty_cycle); + `endif + + // w_edge[13], no_count[12], high_time[11:6], low_time[5:0] + div_calc = mmcm_pll_divider(divide, duty_cycle); + // mx[10:9], pm[8:6], dt[5:0] + phase_calc = mmcm_pll_phase(divide, phase); + + // Return value is the upper and lower address of counter + // Upper address is: + // RESERVED [31:26] + // MX [25:24] + // EDGE [23] + // NOCOUNT [22] + // DELAY_TIME [21:16] + // Lower Address is: + // PHASE_MUX [15:13] + // RESERVED [12] + // HIGH_TIME [11:6] + // LOW_TIME [5:0] + + `ifdef DEBUG + $display("div:%d dc:%d phase:%d ht:%d lt:%d ed:%d nc:%d mx:%d dt:%d pm:%d", + divide, duty_cycle, phase, div_calc[11:6], div_calc[5:0], + div_calc[13], div_calc[12], + phase_calc[16:15], phase_calc[5:0], 3'b000);//Removed PM_Rise bits + `endif + + mmcm_pll_count_calc = + { + // Upper Address + 6'h00, phase_calc[10:9], div_calc[13:12], phase_calc[5:0], + // Lower Address + phase_calc[8:6], 1'b0, div_calc[11:0] + }; + end +endfunction + + +// This function takes in the divide, phase, and duty cycle +// setting to calculate the upper and lower counter registers. +// for fractional multiply/divide functions. +// +// +function [37:0] mmcm_pll_frac_count_calc + ( + input [7:0] divide, // Max divide is 128 + input signed [31:0] phase, + input [31:0] duty_cycle, // Multiplied by 1,000 + input [9:0] frac // Multiplied by 1000 + ); + + //Required for fractional divide calculations + reg [7:0] lt_frac; + reg [7:0] ht_frac; + + reg /*[7:0]*/ wf_fall_frac; + reg /*[7:0]*/ wf_rise_frac; + + reg [31:0] a; + reg [7:0] pm_rise_frac_filtered ; + reg [7:0] pm_fall_frac_filtered ; + reg [7:0] clkout0_divide_int; + reg [2:0] clkout0_divide_frac; + reg [7:0] even_part_high; + reg [7:0] even_part_low; + + reg [7:0] odd; + reg [7:0] odd_and_frac; + + reg [7:0] pm_fall; + reg [7:0] pm_rise; + reg [7:0] dt; + reg [7:0] dt_int; + reg [63:0] dt_calc; + + reg [7:0] pm_rise_frac; + reg [7:0] pm_fall_frac; + + reg [31:0] a_per_in_octets; + reg [31:0] a_phase_in_cycles; + + parameter precision = 0.125; + + reg [31:0] phase_fixed; // changed to 31:0 from 32:1 jt 5/2/11 + reg [31: 0] phase_pos; + reg [31: 0] phase_vco; + reg [31:0] temp;// changed to 31:0 from 32:1 jt 5/2/11 + reg [13:0] div_calc; + reg [16:0] phase_calc; + + begin + `ifdef DEBUG + $display("mmcm_pll_frac_count_calc- divide:%h, phase:%d, duty_cycle:%d", + divide, phase, duty_cycle); + `endif + + //convert phase to fixed + if ((phase < -360000) || (phase > 360000)) begin +`ifndef SYNTHESIS + $display("ERROR: phase of $phase is not between -360000 and 360000"); + `endif + $finish; + end + + + // Return value is + // Transfer data + // RESERVED [37:36] + // FRAC_TIME [35:33] + // FRAC_WF_FALL [32] + // Upper address is: + // RESERVED [31:26] + // MX [25:24] + // EDGE [23] + // NOCOUNT [22] + // DELAY_TIME [21:16] + // Lower Address is: + // PHASE_MUX [15:13] + // RESERVED [12] + // HIGH_TIME [11:6] + // LOW_TIME [5:0] + + + + clkout0_divide_frac = frac / 125; + clkout0_divide_int = divide; + + even_part_high = clkout0_divide_int >> 1;//$rtoi(clkout0_divide_int / 2); + even_part_low = even_part_high; + + odd = clkout0_divide_int - even_part_high - even_part_low; + odd_and_frac = (8*odd) + clkout0_divide_frac; + + lt_frac = even_part_high - (odd_and_frac <= 9);//IF(odd_and_frac>9,even_part_high, even_part_high - 1) + ht_frac = even_part_low - (odd_and_frac <= 8);//IF(odd_and_frac>8,even_part_low, even_part_low- 1) + + pm_fall = {odd[6:0],2'b00} + {6'h00, clkout0_divide_frac[2:1]}; // using >> instead of clkout0_divide_frac / 2 + pm_rise = 0; //0 + + wf_fall_frac = (odd_and_frac >=2) && (odd_and_frac <=9);//IF(odd_and_frac>=2,IF(odd_and_frac <= 9,1,0),0) + wf_rise_frac = (odd_and_frac >=1) && (odd_and_frac <=8);//IF(odd_and_frac>=1,IF(odd_and_frac <= 8,1,0),0) + + + + //Calculate phase in fractional cycles + a_per_in_octets = (8 * divide) + (frac / 125) ; + a_phase_in_cycles = (phase+10) * a_per_in_octets / 360000 ;//Adding 1 due to rounding errors + pm_rise_frac = (a_phase_in_cycles[7:0] ==8'h00)?8'h00:a_phase_in_cycles[7:0] - {a_phase_in_cycles[7:3],3'b000}; + + dt_calc = ((phase+10) * a_per_in_octets / 8 )/360000 ;//TRUNC(phase* divide / 360); //or_simply (a_per_in_octets / 8) + dt = dt_calc[7:0]; + + pm_rise_frac_filtered = (pm_rise_frac >=8) ? (pm_rise_frac ) - 8: pm_rise_frac ; //((phase_fixed * (divide + frac / 1000)) / 360) - {pm_rise_frac[7:3],3'b000};//$rtoi(clkout0_phase * clkout0_divide / 45);//a; + + dt_int = dt + (& pm_rise_frac[7:4]); //IF(pm_rise_overwriting>7,dt+1,dt) + pm_fall_frac = pm_fall + pm_rise_frac; + pm_fall_frac_filtered = pm_fall + pm_rise_frac - {pm_fall_frac[7:3], 3'b000}; + + div_calc = mmcm_pll_divider(divide, duty_cycle); //Use to determine edge[7], no count[6] + phase_calc = mmcm_pll_phase(divide, phase);// returns{mx[1:0], phase_mux[2:0], delay_time[5:0]} + + mmcm_pll_frac_count_calc[37:0] = + { 2'b00, pm_fall_frac_filtered[2:0], wf_fall_frac, + 1'b0, clkout0_divide_frac[2:0], 1'b1, wf_rise_frac, phase_calc[10:9], div_calc[13:12], dt[5:0], + 3'b000, 1'b0, ht_frac[5:0], lt_frac[5:0] //Removed PM_Rise bits +// pm_rise_frac_filtered[2], pm_rise_frac_filtered[1], pm_rise_frac_filtered[0], 1'b0, ht_frac[5:0], lt_frac[5:0] + } ; + + `ifdef DEBUG + $display("-%d.%d p%d>> :DADDR_9_15 frac30to28.frac_en.wf_r_frac.dt:%b%d%d_%b:DADDR_7_13 pm_f_frac_filtered_29to27.wf_f_frac_26:%b%d:DADDR_8_14.pm_r_frac_filt_15to13.ht_frac.lt_frac:%b%b%b:", divide, frac, phase, clkout0_divide_frac, 1, wf_rise_frac, dt, pm_fall_frac_filtered, wf_fall_frac, 3'b000, ht_frac, lt_frac); + `endif + + end +endfunction + + diff --git a/proj/AudioProc.ip_user_files/ipstatic/mmcm_pll_drp_func_us_plus_mmcm.vh b/proj/AudioProc.ip_user_files/ipstatic/mmcm_pll_drp_func_us_plus_mmcm.vh new file mode 100755 index 0000000..fd26211 --- /dev/null +++ b/proj/AudioProc.ip_user_files/ipstatic/mmcm_pll_drp_func_us_plus_mmcm.vh @@ -0,0 +1,886 @@ +/////////////////////////////////////////////////////////////////////////////// +// +// Company: AMD +// Engineer: Jim Tatsukawa. Updated by Ralf Krueger +// Date: 7/30/2014 +// Design Name: MMCME4 DRP +// Module Name: mmcme4_drp_func.h +// Version: 1.31 +// Target Devices: UltraScale Plus Architecture +// Tool versions: 2017.1 +// Description: This header provides the functions necessary to +// calculate the DRP register values for UltraScal+ MMCM. +// +// Revision Notes: 3/22 - Updating lookup_low/lookup_high (CR) +// 4/13 - Fractional divide function in mmcm_frac_count_calc function +// 2/28/17 - Updated for Ultrascale Plus +// +// (c) Copyright 2009-2017, 2023 Advanced Micro Devices, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of AMD and is protected under U.S. and international copyright +// and other intellectual property laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// AMD, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND AMD HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) AMD shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or AMD had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// AMD products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of AMD products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +//////////////////////////////////////////////////////////// +// +/////////////////////////////////////////////////////////////////////////////// + +// These are user functions that should not be modified. Changes to the defines +// or code within the functions may alter the accuracy of the calculations. + +// Define debug to provide extra messages during elaboration +//`define DEBUG 1 + +// FRAC_PRECISION describes the width of the fractional portion of the fixed +// point numbers. These should not be modified, they are for development only +`define FRAC_PRECISION 10 +// FIXED_WIDTH describes the total size for fixed point calculations(int+frac). +// Warning: L.50 and below will not calculate properly with FIXED_WIDTHs +// greater than 32 +`define FIXED_WIDTH 32 + +// This function takes a fixed point number and rounds it to the nearest +// fractional precision bit. +function [`FIXED_WIDTH:1] round_frac + ( + // Input is (FIXED_WIDTH-FRAC_PRECISION).FRAC_PRECISION fixed point number + input [`FIXED_WIDTH:1] decimal, + + // This describes the precision of the fraction, for example a value + // of 1 would modify the fractional so that instead of being a .16 + // fractional, it would be a .1 (rounded to the nearest 0.5 in turn) + input [`FIXED_WIDTH:1] precision + ); + + begin + + `ifdef DEBUG + $display("round_frac - decimal: %h, precision: %h", decimal, precision); + `endif + // If the fractional precision bit is high then round up + if( decimal[(`FRAC_PRECISION-precision)] == 1'b1) begin + round_frac = decimal + (1'b1 << (`FRAC_PRECISION-precision)); + end else begin + round_frac = decimal; + end + `ifdef DEBUG + $display("round_frac: %h", round_frac); + `endif + end +endfunction + +// This function calculates high_time, low_time, w_edge, and no_count +// of a non-fractional counter based on the divide and duty cycle +// +// NOTE: high_time and low_time are returned as integers between 0 and 63 +// inclusive. 64 should equal 6'b000000 (in other words it is okay to +// ignore the overflow) +function [13:0] mmcm_pll_divider + ( + input [7:0] divide, // Max divide is 128 + input [31:0] duty_cycle // Duty cycle is multiplied by 100,000 + ); + + reg [`FIXED_WIDTH:1] duty_cycle_fix; + + // High/Low time is initially calculated with a wider integer to prevent a + // calculation error when it overflows to 64. + reg [6:0] high_time; + reg [6:0] low_time; + reg w_edge; + reg no_count; + + reg [`FIXED_WIDTH:1] temp; + + begin + // Duty Cycle must be between 0 and 1,000 + if(duty_cycle <=0 || duty_cycle >= 100000) begin +`ifndef SYNTHESIS + $display("ERROR: duty_cycle: %d is invalid", duty_cycle); + `endif + $finish; + end + + // Convert to FIXED_WIDTH-FRAC_PRECISION.FRAC_PRECISION fixed point + duty_cycle_fix = (duty_cycle << `FRAC_PRECISION) / 100_000; + + `ifdef DEBUG + $display("duty_cycle_fix: %h", duty_cycle_fix); + `endif + + // If the divide is 1 nothing needs to be set except the no_count bit. + // Other values are dummies + if(divide == 7'h01) begin + high_time = 7'h01; + w_edge = 1'b0; + low_time = 7'h01; + no_count = 1'b1; + end else begin + temp = round_frac(duty_cycle_fix*divide, 1); + + // comes from above round_frac + high_time = temp[`FRAC_PRECISION+7:`FRAC_PRECISION+1]; + // If the duty cycle * divide rounded is .5 or greater then this bit + // is set. + w_edge = temp[`FRAC_PRECISION]; // comes from round_frac + + // If the high time comes out to 0, it needs to be set to at least 1 + // and w_edge set to 0 + if(high_time == 7'h00) begin + high_time = 7'h01; + w_edge = 1'b0; + end + + if(high_time == divide) begin + high_time = divide - 1; + w_edge = 1'b1; + end + + // Calculate low_time based on the divide setting and set no_count to + // 0 as it is only used when divide is 1. + low_time = divide - high_time; + no_count = 1'b0; + end + + // Set the return value. + mmcm_pll_divider = {w_edge,no_count,high_time[5:0],low_time[5:0]}; + end +endfunction + +// This function calculates mx, delay_time, and phase_mux +// of a non-fractional counter based on the divide and phase +// +// NOTE: The only valid value for the MX bits is 2'b00 to ensure the coarse mux +// is used. +function [10:0] mmcm_pll_phase + ( + // divide must be an integer (use fractional if not) + // assumed that divide already checked to be valid + input [7:0] divide, // Max divide is 128 + + // Phase is given in degrees (-360,000 to 360,000) + input signed [31:0] phase + ); + + reg [`FIXED_WIDTH:1] phase_in_cycles; + reg [`FIXED_WIDTH:1] phase_fixed; + reg [1:0] mx; + reg [5:0] delay_time; + reg [2:0] phase_mux; + + reg [`FIXED_WIDTH:1] temp; + + begin +`ifdef DEBUG + $display("mmcm_phase-divide:%d,phase:%d", divide, phase); +`endif + + if ((phase < -360000) || (phase > 360000)) begin +`ifndef SYNTHESIS + $display("ERROR: phase of $phase is not between -360000 and 360000"); + `endif + $finish; + end + + // If phase is less than 0, convert it to a positive phase shift + // Convert to (FIXED_WIDTH-FRAC_PRECISION).FRAC_PRECISION fixed point + if(phase < 0) begin + phase_fixed = ( (phase + 360000) << `FRAC_PRECISION ) / 1000; + end else begin + phase_fixed = ( phase << `FRAC_PRECISION ) / 1000; + end + + // Put phase in terms of decimal number of vco clock cycles + phase_in_cycles = ( phase_fixed * divide ) / 360; + +`ifdef DEBUG + $display("phase_in_cycles: %h", phase_in_cycles); +`endif + + temp = round_frac(phase_in_cycles, 3); + + // set mx to 2'b00 that the phase mux from the VCO is enabled + mx = 2'b00; + phase_mux = temp[`FRAC_PRECISION:`FRAC_PRECISION-2]; + delay_time = temp[`FRAC_PRECISION+6:`FRAC_PRECISION+1]; + + `ifdef DEBUG + $display("temp: %h", temp); + `endif + + // Setup the return value + mmcm_pll_phase={mx, phase_mux, delay_time}; + end +endfunction + +// This function takes the divide value and outputs the necessary lock values +function [39:0] mmcm_pll_lock_lookup + ( + input [7:0] divide // Max M divide is 128 in UltrascalePlus + ); + + reg [5119:0] lookup; + + begin + lookup = { + // This table is composed of: + // LockRefDly_LockFBDly_LockCnt_LockSatHigh_UnlockCnt + 40'b00110_00110_1111101000_1111101001_0000000001, // M=1 (not allowed) + 40'b00110_00110_1111101000_1111101001_0000000001, // M=2 + 40'b01000_01000_1111101000_1111101001_0000000001, // M=3 + 40'b01011_01011_1111101000_1111101001_0000000001, // M=4 + 40'b01110_01110_1111101000_1111101001_0000000001, // M=5 + 40'b10001_10001_1111101000_1111101001_0000000001, // M=6 + 40'b10011_10011_1111101000_1111101001_0000000001, // M=7 + 40'b10110_10110_1111101000_1111101001_0000000001, + 40'b11001_11001_1111101000_1111101001_0000000001, + 40'b11100_11100_1111101000_1111101001_0000000001, + 40'b11111_11111_1110000100_1111101001_0000000001, + 40'b11111_11111_1100111001_1111101001_0000000001, + 40'b11111_11111_1011101110_1111101001_0000000001, + 40'b11111_11111_1010111100_1111101001_0000000001, + 40'b11111_11111_1010001010_1111101001_0000000001, + 40'b11111_11111_1001110001_1111101001_0000000001, + 40'b11111_11111_1000111111_1111101001_0000000001, + 40'b11111_11111_1000100110_1111101001_0000000001, + 40'b11111_11111_1000001101_1111101001_0000000001, + 40'b11111_11111_0111110100_1111101001_0000000001, + 40'b11111_11111_0111011011_1111101001_0000000001, + 40'b11111_11111_0111000010_1111101001_0000000001, + 40'b11111_11111_0110101001_1111101001_0000000001, + 40'b11111_11111_0110010000_1111101001_0000000001, + 40'b11111_11111_0110010000_1111101001_0000000001, + 40'b11111_11111_0101110111_1111101001_0000000001, + 40'b11111_11111_0101011110_1111101001_0000000001, + 40'b11111_11111_0101011110_1111101001_0000000001, + 40'b11111_11111_0101000101_1111101001_0000000001, + 40'b11111_11111_0101000101_1111101001_0000000001, + 40'b11111_11111_0100101100_1111101001_0000000001, + 40'b11111_11111_0100101100_1111101001_0000000001, + 40'b11111_11111_0100101100_1111101001_0000000001, + 40'b11111_11111_0100010011_1111101001_0000000001, + 40'b11111_11111_0100010011_1111101001_0000000001, + 40'b11111_11111_0100010011_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, // M=127 + 40'b11111_11111_0011111010_1111101001_0000000001 // M=128 + }; + + // Set lookup_entry with the explicit bits from lookup with a part select + mmcm_pll_lock_lookup = lookup[ ((128-divide)*40) +: 40]; + `ifdef DEBUG + $display("lock_lookup: %b", mmcm_pll_lock_lookup); + `endif + end +endfunction + +// This function takes the divide value and the bandwidth setting of the MMCM +// and outputs the digital filter settings necessary. +function [9:0] mmcm_pll_filter_lookup + ( + input [7:0] divide, // input [7:0] divide // Max M divide is 128 in UltraScalePlus + input [8*9:0] BANDWIDTH + ); + + reg [1279:0] lookup_low; + reg [1279:0] lookup_high; + + reg [9:0] lookup_entry; + + begin + lookup_low = { + // CP_RES_LFHF + 10'b0011_1111_11, // M=1 - not legal + 10'b0011_1111_11, // M=2 + 10'b0011_1101_11, // M=3 + 10'b0011_0101_11, // M=4 + 10'b0011_1001_11, // M=5 + 10'b0011_1110_11, // M=6 + 10'b0011_1110_11, // M=7 + 10'b0011_0001_11, + 10'b0011_0110_11, + 10'b0011_0110_11, + 10'b0011_0110_11, + 10'b0011_1010_11, + 10'b0011_1010_11, + 10'b0011_1010_11, + 10'b0100_0110_11, + 10'b0011_1100_11, + 10'b1110_0110_11, + 10'b1111_0110_11, + 10'b1110_1010_11, + 10'b1110_1010_11, + 10'b1111_1010_11, + 10'b1111_1010_11, + 10'b1111_1010_11, + 10'b1111_1010_11, + 10'b1111_1010_11, + 10'b1101_1100_11, + 10'b1101_1100_11, + 10'b1101_1100_11, + 10'b1110_1100_11, + 10'b1110_1100_11, + 10'b1110_1100_11, + 10'b1111_1100_11, + 10'b1111_1100_11, + 10'b1111_1100_11, + 10'b1111_1100_11, + 10'b1111_1100_11, + 10'b1111_1100_11, + 10'b1110_0010_11, + 10'b1110_0010_11, + 10'b1110_0010_11, + 10'b1110_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1100_0100_11, + 10'b1100_0100_11, + 10'b1100_0100_11, + 10'b1100_0100_11, + 10'b1100_0100_11, + 10'b1100_0100_11, + 10'b1100_0100_11, + 10'b1100_0100_11, + 10'b1101_0100_11, + 10'b1101_0100_11, + 10'b1101_0100_11, + 10'b1101_0100_11, + 10'b1101_0100_11, + 10'b1101_0100_11, + 10'b1101_0100_11, + 10'b1110_0100_11, + 10'b1110_0100_11, + 10'b1110_0100_11, + 10'b1110_0100_11, + 10'b1110_0100_11, + 10'b1110_0100_11, + 10'b1110_0100_11, + 10'b1110_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1101_1000_11, + 10'b1101_1000_11, + 10'b1101_1000_11, + 10'b1101_1000_11, + 10'b1101_1000_11, + 10'b1101_1000_11, + 10'b1101_1000_11, + 10'b1101_1000_11, // M=127 + 10'b1101_1000_11 // M=128 +}; + + lookup_high = { + // CP_RES_LFHF + 10'b0111_1111_11, // M=1 - not legal + 10'b0111_1111_11, // M=2 + 10'b1110_1111_11, // M=3 + 10'b1111_1111_11, // M=4 + 10'b1111_1011_11, // M=5 + 10'b1111_1101_11, // M=6 + 10'b1111_0011_11, // M=7 + 10'b1110_0101_11, + 10'b1111_1001_11, + 10'b1111_1001_11, + 10'b1110_1110_11, + 10'b1111_1110_11, + 10'b1111_0001_11, + 10'b1111_0001_11, + 10'b1111_0001_11, + 10'b1110_0110_11, + 10'b1110_0110_11, + 10'b1111_0110_11, + 10'b1110_1010_11, + 10'b1110_1010_11, + 10'b1111_1010_11, + 10'b1111_1010_11, + 10'b1111_1010_11, + 10'b1111_1010_11, + 10'b1111_1010_11, + 10'b1101_1100_11, + 10'b1101_1100_11, + 10'b1101_1100_11, + 10'b1110_1100_11, + 10'b1110_1100_11, + 10'b1110_1100_11, + 10'b1111_1100_11, + 10'b1111_1100_11, + 10'b1111_1100_11, + 10'b1111_1100_11, + 10'b1111_1100_11, + 10'b1111_1100_11, + 10'b1110_0010_11, + 10'b1110_0010_11, + 10'b1110_0010_11, + 10'b1110_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1100_0100_11, + 10'b1100_0100_11, + 10'b1100_0100_11, + 10'b1100_0100_11, + 10'b1100_0100_11, + 10'b1100_0100_11, + 10'b1100_0100_11, + 10'b1100_0100_11, + 10'b1101_0100_11, + 10'b1101_0100_11, + 10'b1101_0100_11, + 10'b1101_0100_11, + 10'b1101_0100_11, + 10'b1101_0100_11, + 10'b1101_0100_11, + 10'b1110_0100_11, + 10'b1110_0100_11, + 10'b1110_0100_11, + 10'b1110_0100_11, + 10'b1110_0100_11, + 10'b1110_0100_11, + 10'b1110_0100_11, + 10'b1110_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1101_1000_11, + 10'b1101_1000_11, + 10'b1101_1000_11, + 10'b1101_1000_11, + 10'b1101_1000_11, + 10'b1101_1000_11, + 10'b1101_1000_11, + 10'b1101_1000_11, + 10'b1101_1000_11 // M=128 +}; + + // Set lookup_entry with the explicit bits from lookup with a part select + if(BANDWIDTH == "LOW") begin + // Low Bandwidth + mmcm_pll_filter_lookup = lookup_low[ ((128-divide)*10) +: 10]; + end else begin + // High or optimized bandwidth + mmcm_pll_filter_lookup = lookup_high[ ((128-divide)*10) +: 10]; + end + + `ifdef DEBUG + $display("filter_lookup: %b", mmcm_pll_filter_lookup); + `endif + end +endfunction + +// This function takes in the divide, phase, and duty cycle +// setting to calculate the upper and lower counter registers. +function [37:0] mmcm_pll_count_calc + ( + input [7:0] divide, // Max divide is 128 + input signed [31:0] phase, + input [31:0] duty_cycle // Multiplied by 100,000 + ); + + reg [13:0] div_calc; + reg [16:0] phase_calc; + + begin + `ifdef DEBUG + $display("mmcm_pll_count_calc- divide:%h, phase:%d, duty_cycle:%d", + divide, phase, duty_cycle); + `endif + + // w_edge[13], no_count[12], high_time[11:6], low_time[5:0] + div_calc = mmcm_pll_divider(divide, duty_cycle); + // mx[10:9], pm[8:6], dt[5:0] + phase_calc = mmcm_pll_phase(divide, phase); + + // Return value is the upper and lower address of counter + // Upper address is: + // RESERVED [31:26] + // MX [25:24] + // EDGE [23] + // NOCOUNT [22] + // DELAY_TIME [21:16] + // Lower Address is: + // PHASE_MUX [15:13] + // RESERVED [12] + // HIGH_TIME [11:6] + // LOW_TIME [5:0] + + `ifdef DEBUG + $display("div:%d dc:%d phase:%d ht:%d lt:%d ed:%d nc:%d mx:%d dt:%d pm:%d", + divide, duty_cycle, phase, div_calc[11:6], div_calc[5:0], + div_calc[13], div_calc[12], + phase_calc[16:15], phase_calc[5:0], phase_calc[14:12]); + `endif + + mmcm_pll_count_calc = + { + // Upper Address + 6'h00, phase_calc[10:9], div_calc[13:12], phase_calc[5:0], + // Lower Address + phase_calc[8:6], 1'b0, div_calc[11:0] + }; + end +endfunction + + +// This function takes in the divide, phase, and duty cycle +// setting to calculate the upper and lower counter registers. +// for fractional multiply/divide functions. +// +// +function [37:0] mmcm_frac_count_calc + ( + input [7:0] divide, // Max divide is 128 + input signed [31:0] phase, + input [31:0] duty_cycle, // Multiplied by 100,000. Not programmable in fractional + input [9:0] frac // Multiplied by 1000 + ); + + //Required for fractional divide calculations + reg [7:0] lt_frac; + reg [7:0] ht_frac; + + reg /*[7:0]*/ wf_fall_frac; + reg /*[7:0]*/ wf_rise_frac; + + reg [31:0] a; + reg [7:0] pm_rise_frac_filtered ; + reg [7:0] pm_fall_frac_filtered ; + reg [7:0] clkout0_divide_int; + reg [2:0] clkout0_divide_frac; + reg [7:0] even_part_high; + reg [7:0] even_part_low; + + reg [7:0] odd; + reg [7:0] odd_and_frac; + + reg [7:0] pm_fall; + reg [7:0] pm_rise; + reg [7:0] dt; + reg [7:0] dt_int; + reg [63:0] dt_calc; + + reg [7:0] pm_rise_frac; + reg [7:0] pm_fall_frac; + + reg [31:0] a_per_in_octets; + reg [31:0] a_phase_in_cycles; + + parameter precision = 0.125; + + reg [31:0] phase_fixed; // changed to 31:0 from 32:1 jt 5/2/11 + reg [31: 0] phase_pos; + reg [31: 0] phase_vco; + reg [31:0] temp;// changed to 31:0 from 32:1 jt 5/2/11 + reg [13:0] div_calc; + reg [16:0] phase_calc; + + begin + `ifdef DEBUG + $display("mmcm_frac_count_calc- divide:%h, phase:%d, duty_cycle:%d", + divide, phase, duty_cycle); + `endif + + //convert phase to fixed + if ((phase < -360000) || (phase > 360000)) begin +`ifndef SYNTHESIS + $display("ERROR: phase of $phase is not between -360000 and 360000"); + `endif + $finish; + end + + + // Return value is + // Transfer data + // RESERVED [37:36] + // FRAC_TIME [35:33] + // FRAC_WF_FALL [32] + // Upper address is: + // RESERVED [31:26] + // MX [25:24] + // EDGE [23] + // NOCOUNT [22] + // DELAY_TIME [21:16] + // Lower Address is: + // PHASE_MUX [15:13] + // RESERVED [12] + // HIGH_TIME [11:6] + // LOW_TIME [5:0] + + + + clkout0_divide_frac = frac / 125; + clkout0_divide_int = divide; + + even_part_high = clkout0_divide_int >> 1;//$rtoi(clkout0_divide_int / 2); + even_part_low = even_part_high; + + odd = clkout0_divide_int - even_part_high - even_part_low; + odd_and_frac = (8*odd) + clkout0_divide_frac; + + lt_frac = even_part_high - (odd_and_frac <= 9);//IF(odd_and_frac>9,even_part_high, even_part_high - 1) + ht_frac = even_part_low - (odd_and_frac <= 8);//IF(odd_and_frac>8,even_part_low, even_part_low- 1) + + pm_fall = {odd[6:0],2'b00} + {6'h00, clkout0_divide_frac[2:1]}; // using >> instead of clkout0_divide_frac / 2 + pm_rise = 0; //0 + + wf_fall_frac = ((odd_and_frac >=2) && (odd_and_frac <=9)) || (clkout0_divide_int == 2 && clkout0_divide_frac == 1); //IF(odd_and_frac>=2,IF(odd_and_frac <= 9,1,0),0) + wf_rise_frac = (odd_and_frac >=1) && (odd_and_frac <=8); //IF(odd_and_frac>=1,IF(odd_and_frac <= 8,1,0),0) + + + + //Calculate phase in fractional cycles + a_per_in_octets = (8 * divide) + (frac / 125) ; + a_phase_in_cycles = (phase+10) * a_per_in_octets / 360000 ;//Adding 1 due to rounding errors + pm_rise_frac = (a_phase_in_cycles[7:0] ==8'h00)?8'h00:a_phase_in_cycles[7:0] - {a_phase_in_cycles[7:3],3'b000}; + + dt_calc = ((phase+10) * a_per_in_octets / 8 )/360000 ;//TRUNC(phase* divide / 360); //or_simply (a_per_in_octets / 8) + dt = dt_calc[7:0]; + + pm_rise_frac_filtered = (pm_rise_frac >=8) ? (pm_rise_frac ) - 8: pm_rise_frac ; //((phase_fixed * (divide + frac / 1000)) / 360) - {pm_rise_frac[7:3],3'b000};//$rtoi(clkout0_phase * clkout0_divide / 45);//a; + + dt_int = dt + (& pm_rise_frac[7:4]); //IF(pm_rise_overwriting>7,dt+1,dt) + pm_fall_frac = pm_fall + pm_rise_frac; + pm_fall_frac_filtered = pm_fall + pm_rise_frac - {pm_fall_frac[7:3], 3'b000}; + + div_calc = mmcm_pll_divider(divide, duty_cycle); //Use to determine edge[7], no count[6] + phase_calc = mmcm_pll_phase(divide, phase);// returns{mx[1:0], phase_mux[2:0], delay_time[5:0]} + + mmcm_frac_count_calc[37:0] = + { 2'b00, pm_fall_frac_filtered[2:0], wf_fall_frac, + 1'b0, clkout0_divide_frac[2:0], 1'b1, wf_rise_frac, phase_calc[10:9], 2'b00, dt[5:0], + pm_rise_frac_filtered[2], pm_rise_frac_filtered[1], pm_rise_frac_filtered[0], 1'b0, ht_frac[5:0], lt_frac[5:0] + } ; + + `ifdef DEBUG + $display("-%d.%d p%d>> :DADDR_9_15 frac30to28.frac_en.wf_r_frac.dt:%b%d%d_%b:DADDR_7_13 pm_f_frac_filtered_29to27.wf_f_frac_26:%b%d:DADDR_8_14.pm_r_frac_filt_15to13.ht_frac.lt_frac:%b%b%b:", divide, frac, phase, clkout0_divide_frac, 1, wf_rise_frac, dt, pm_fall_frac_filtered, wf_fall_frac, pm_rise_frac_filtered, ht_frac, lt_frac); + `endif + + end +endfunction + diff --git a/proj/AudioProc.ip_user_files/ipstatic/mmcm_pll_drp_func_us_plus_pll.vh b/proj/AudioProc.ip_user_files/ipstatic/mmcm_pll_drp_func_us_plus_pll.vh new file mode 100755 index 0000000..0899943 --- /dev/null +++ b/proj/AudioProc.ip_user_files/ipstatic/mmcm_pll_drp_func_us_plus_pll.vh @@ -0,0 +1,561 @@ +/////////////////////////////////////////////////////////////////////////////// +// +// Company: AMD +// Engineer: Jim Tatsukawa, Ralf Krueger, updated for Ultrascale+ +// Date: 6/15/2015 +// Design Name: PLLE4 DRP +// Module Name: plle4_drp_func.h +// Version: 2.0 +// Target Devices: UltraScale+ Architecture +// Tool versions: 2017.1 +// Description: This header provides the functions necessary to +// calculate the DRP register values for the V6 PLL. +// +// Revision Notes: 8/11 - PLLE3 updated for PLLE3 file 4564419 +// Revision Notes: 6/15 - pll_filter_lookup fixed for max M of 19 +// M_Rise bits have been removed for PLLE3 +// Revision Notes: 2/28/17 - pll_filter_lookup and CPRES updated for +// Ultrascale+ and for max M of 21 +// +// (c) Copyright 2009-2017, 2023 Advanced Micro Devices, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of AMD and is protected under U.S. and international copyright +// and other intellectual property laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// AMD, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND AMD HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) AMD shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or AMD had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// AMD products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of AMD products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +//////////////////////////////////////////////////////////// +// +/////////////////////////////////////////////////////////////////////////////// + +// These are user functions that should not be modified. Changes to the defines +// or code within the functions may alter the accuracy of the calculations. + +// Define debug to provide extra messages durring elaboration +//`define DEBUG 1 + +// FRAC_PRECISION describes the width of the fractional portion of the fixed +// point numbers. These should not be modified, they are for development +// only +`define FRAC_PRECISION 10 +// FIXED_WIDTH describes the total size for fixed point calculations(int+frac). +// Warning: L.50 and below will not calculate properly with FIXED_WIDTHs +// greater than 32 +`define FIXED_WIDTH 32 + +// This function takes a fixed point number and rounds it to the nearest +// fractional precision bit. +function [`FIXED_WIDTH:1] round_frac + ( + // Input is (FIXED_WIDTH-FRAC_PRECISION).FRAC_PRECISION fixed point number + input [`FIXED_WIDTH:1] decimal, + + // This describes the precision of the fraction, for example a value + // of 1 would modify the fractional so that instead of being a .16 + // fractional, it would be a .1 (rounded to the nearest 0.5 in turn) + input [`FIXED_WIDTH:1] precision + ); + + begin + + `ifdef DEBUG + $display("round_frac - decimal: %h, precision: %h", decimal, precision); + `endif + // If the fractional precision bit is high then round up + if( decimal[(`FRAC_PRECISION-precision)] == 1'b1) begin + round_frac = decimal + (1'b1 << (`FRAC_PRECISION-precision)); + end else begin + round_frac = decimal; + end + `ifdef DEBUG + $display("round_frac: %h", round_frac); + `endif + end +endfunction + +// This function calculates high_time, low_time, w_edge, and no_count +// of a non-fractional counter based on the divide and duty cycle +// +// NOTE: high_time and low_time are returned as integers between 0 and 63 +// inclusive. 64 should equal 6'b000000 (in other words it is okay to +// ignore the overflow) +function [13:0] mmcm_pll_divider + ( + input [7:0] divide, // Max divide is 128 + input [31:0] duty_cycle // Duty cycle is multiplied by 100,000 + ); + + reg [`FIXED_WIDTH:1] duty_cycle_fix; + + // High/Low time is initially calculated with a wider integer to prevent a + // calculation error when it overflows to 64. + reg [6:0] high_time; + reg [6:0] low_time; + reg w_edge; + reg no_count; + + reg [`FIXED_WIDTH:1] temp; + + begin + // Duty Cycle must be between 0 and 1,000 + if(duty_cycle <=0 || duty_cycle >= 100000) begin +`ifndef SYNTHESIS + $display("ERROR: duty_cycle: %d is invalid", duty_cycle); + `endif + $finish; + end + + // Convert to FIXED_WIDTH-FRAC_PRECISION.FRAC_PRECISION fixed point + duty_cycle_fix = (duty_cycle << `FRAC_PRECISION) / 100_000; + + `ifdef DEBUG + $display("duty_cycle_fix: %h", duty_cycle_fix); + `endif + + // If the divide is 1 nothing needs to be set except the no_count bit. + // Other values are dummies + if(divide == 7'h01) begin + high_time = 7'h01; + w_edge = 1'b0; + low_time = 7'h01; + no_count = 1'b1; + end else begin + temp = round_frac(duty_cycle_fix*divide, 1); + + // comes from above round_frac + high_time = temp[`FRAC_PRECISION+7:`FRAC_PRECISION+1]; + // If the duty cycle * divide rounded is .5 or greater then this bit + // is set. + w_edge = temp[`FRAC_PRECISION]; // comes from round_frac + + // If the high time comes out to 0, it needs to be set to at least 1 + // and w_edge set to 0 + if(high_time == 7'h00) begin + high_time = 7'h01; + w_edge = 1'b0; + end + + if(high_time == divide) begin + high_time = divide - 1; + w_edge = 1'b1; + end + + // Calculate low_time based on the divide setting and set no_count to + // 0 as it is only used when divide is 1. + low_time = divide - high_time; + no_count = 1'b0; + end + + // Set the return value. + mmcm_pll_divider = {w_edge,no_count,high_time[5:0],low_time[5:0]}; + end +endfunction + +// This function calculates mx, delay_time, and phase_mux +// of a non-fractional counter based on the divide and phase +// +// NOTE: The only valid value for the MX bits is 2'b00 to ensure the coarse mux +// is used. +function [10:0] mmcm_pll_phase + ( + // divide must be an integer (use fractional if not) + // assumed that divide already checked to be valid + input [7:0] divide, // Max divide is 128 + + // Phase is given in degrees (-360,000 to 360,000) + input signed [31:0] phase + ); + + reg [`FIXED_WIDTH:1] phase_in_cycles; + reg [`FIXED_WIDTH:1] phase_fixed; + reg [1:0] mx; + reg [5:0] delay_time; + reg [2:0] phase_mux; + + reg [`FIXED_WIDTH:1] temp; + + begin +`ifdef DEBUG + $display("pll_phase-divide:%d,phase:%d", + divide, phase); +`endif + + if ((phase < -360000) || (phase > 360000)) begin +`ifndef SYNTHESIS + $display("ERROR: phase of $phase is not between -360000 and 360000"); +`endif + $finish; + end + + // If phase is less than 0, convert it to a positive phase shift + // Convert to (FIXED_WIDTH-FRAC_PRECISION).FRAC_PRECISION fixed point + if(phase < 0) begin + phase_fixed = ( (phase + 360000) << `FRAC_PRECISION ) / 1000; + end else begin + phase_fixed = ( phase << `FRAC_PRECISION ) / 1000; + end + + // Put phase in terms of decimal number of vco clock cycles + phase_in_cycles = ( phase_fixed * divide ) / 360; + +`ifdef DEBUG + $display("phase_in_cycles: %h", phase_in_cycles); +`endif + + + temp = round_frac(phase_in_cycles, 3); + + // set mx to 2'b00 that the phase mux from the VCO is enabled + mx = 2'b00; + phase_mux = temp[`FRAC_PRECISION:`FRAC_PRECISION-2]; + delay_time = temp[`FRAC_PRECISION+6:`FRAC_PRECISION+1]; + + `ifdef DEBUG + $display("temp: %h", temp); + `endif + + // Setup the return value + mmcm_pll_phase={mx, phase_mux, delay_time}; + end +endfunction + +// This function takes the divide value and outputs the necessary lock values +function [39:0] mmcm_pll_lock_lookup + ( + input [6:0] divide // Max divide is 21 + ); + + reg [839:0] lookup; + + begin + lookup = { + // This table is composed of: + // LockRefDly_LockFBDly_LockCnt_LockSatHigh_UnlockCnt + 40'b00110_00110_1111101000_1111101001_0000000001, //1 illegal in Ultrascale+ + 40'b00110_00110_1111101000_1111101001_0000000001, //2 + 40'b01000_01000_1111101000_1111101001_0000000001, //3 + 40'b01011_01011_1111101000_1111101001_0000000001, //4 + 40'b01110_01110_1111101000_1111101001_0000000001, //5 + 40'b10001_10001_1111101000_1111101001_0000000001, //6 + 40'b10011_10011_1111101000_1111101001_0000000001, //7 + 40'b10110_10110_1111101000_1111101001_0000000001, //8 + 40'b11001_11001_1111101000_1111101001_0000000001, //9 + 40'b11100_11100_1111101000_1111101001_0000000001, //10 + 40'b11111_11111_1110000100_1111101001_0000000001, //11 + 40'b11111_11111_1100111001_1111101001_0000000001, //12 + 40'b11111_11111_1011101110_1111101001_0000000001, //13 + 40'b11111_11111_1010111100_1111101001_0000000001, //14 + 40'b11111_11111_1010001010_1111101001_0000000001, //15 + 40'b11111_11111_1001110001_1111101001_0000000001, //16 + 40'b11111_11111_1000111111_1111101001_0000000001, //17 + 40'b11111_11111_1000100110_1111101001_0000000001, //18 + 40'b11111_11111_1000001101_1111101001_0000000001, //19 + 40'b11111_11111_0111110100_1111101001_0000000001, //20 + 40'b11111_11111_0111011011_1111101001_0000000001 //21 + }; + + // Set lookup_entry with the explicit bits from lookup with a part select + mmcm_pll_lock_lookup = lookup[ ((21-divide)*40) +: 40]; + `ifdef DEBUG + $display("lock_lookup: %b", pll_lock_lookup); + `endif + end +endfunction + +// This function takes the divide value and the bandwidth setting of the PLL +// and outputs the digital filter settings necessary. Removing bandwidth setting for PLLE3. +function [9:0] mmcm_pll_filter_lookup + ( + input [6:0] divide // Max divide is 21 + ); + + reg [209:0] lookup; + reg [9:0] lookup_entry; + + begin + + lookup = { + // CP_RES_LFHF + 10'b0011_0111_11, //1 not legal in Ultrascale+ + 10'b0011_0111_11, //2 + 10'b0011_0011_11, //3 + 10'b0011_1001_11, //4 + 10'b0011_0001_11, //5 + 10'b0100_1110_11, //6 + 10'b0011_0110_11, //7 + 10'b0011_1010_11, //8 + 10'b0111_1001_11, //9 + 10'b0111_1001_11, //10 + 10'b0101_0110_11, //11 + 10'b1100_0101_11, //12 + 10'b0101_1010_11, //13 + 10'b0110_0110_11, //14 + 10'b0110_1010_11, //15 + 10'b0111_0110_11, //16 + 10'b1111_0101_11, //17 + 10'b1100_0110_11, //18 + 10'b1110_0001_11, //19 + 10'b1101_0110_11, //20 + 10'b1111_0001_11 //21 + }; + + mmcm_pll_filter_lookup = lookup [ ((21-divide)*10) +: 10]; + + `ifdef DEBUG + $display("filter_lookup: %b", pll_filter_lookup); + `endif + end +endfunction + +// This function set the CLKOUTPHY divide settings to match +// the desired CLKOUTPHY_MODE setting. To create VCO_X2, then +// the CLKOUTPHY will be set to 2'b00 since the VCO is internally +// doubled and 2'b00 will represent divide by 1. Similarly "VCO" +// will need to divide the doubled clock VCO clock frequency by +// 2 therefore 2'b01 will match a divide by 2.And VCO_HALF will +// need to divide the doubled VCO by 4, therefore 2'b10 +function [9:0] mmcm_pll_clkoutphy_calc + ( + input [8*9:0] CLKOUTPHY_MODE + ); + + if(CLKOUTPHY_MODE == "VCO_X2") begin + mmcm_pll_clkoutphy_calc= 2'b00; + end else if(CLKOUTPHY_MODE == "VCO") begin + mmcm_pll_clkoutphy_calc= 2'b01; + end else if(CLKOUTPHY_MODE == "CLKIN") begin + mmcm_pll_clkoutphy_calc= 2'b11; + end else begin // Assume "VCO_HALF" + mmcm_pll_clkoutphy_calc= 2'b10; + end + +endfunction + + +// This function takes in the divide, phase, and duty cycle +// setting to calculate the upper and lower counter registers. +function [37:0] mmcm_pll_count_calc + ( + input [7:0] divide, // Max divide is 128 + input signed [31:0] phase, + input [31:0] duty_cycle // Multiplied by 100,000 + ); + + reg [13:0] div_calc; + reg [16:0] phase_calc; + + begin + `ifdef DEBUG + $display("pll_count_calc- divide:%h, phase:%d, duty_cycle:%d", + divide, phase, duty_cycle); + `endif + + // w_edge[13], no_count[12], high_time[11:6], low_time[5:0] + div_calc = mmcm_pll_divider(divide, duty_cycle); + // mx[10:9], pm[8:6], dt[5:0] + phase_calc = mmcm_pll_phase(divide, phase); + + // Return value is the upper and lower address of counter + // Upper address is: + // RESERVED [31:26] + // MX [25:24] + // EDGE [23] + // NOCOUNT [22] + // DELAY_TIME [21:16] + // Lower Address is: + // PHASE_MUX [15:13] + // RESERVED [12] + // HIGH_TIME [11:6] + // LOW_TIME [5:0] + + `ifdef DEBUG + $display("div:%d dc:%d phase:%d ht:%d lt:%d ed:%d nc:%d mx:%d dt:%d pm:%d", + divide, duty_cycle, phase, div_calc[11:6], div_calc[5:0], + div_calc[13], div_calc[12], + phase_calc[16:15], phase_calc[5:0], 3'b000); //Removed PM_Rise bits + `endif + + mmcm_pll_count_calc = + { + // Upper Address + 6'h00, phase_calc[10:9], div_calc[13:12], phase_calc[5:0], + // Lower Address + phase_calc[8:6], 1'b0, div_calc[11:0] + }; + end +endfunction + + +// This function takes in the divide, phase, and duty cycle +// setting to calculate the upper and lower counter registers. +// for fractional multiply/divide functions. +// +// +function [37:0] mmcm_pll_frac_count_calc + ( + input [7:0] divide, // Max divide is 128 + input signed [31:0] phase, + input [31:0] duty_cycle, // Multiplied by 1,000 + input [9:0] frac // Multiplied by 1000 + ); + + //Required for fractional divide calculations + reg [7:0] lt_frac; + reg [7:0] ht_frac; + + reg /*[7:0]*/ wf_fall_frac; + reg /*[7:0]*/ wf_rise_frac; + + reg [31:0] a; + reg [7:0] pm_rise_frac_filtered ; + reg [7:0] pm_fall_frac_filtered ; + reg [7:0] clkout0_divide_int; + reg [2:0] clkout0_divide_frac; + reg [7:0] even_part_high; + reg [7:0] even_part_low; + + reg [7:0] odd; + reg [7:0] odd_and_frac; + + reg [7:0] pm_fall; + reg [7:0] pm_rise; + reg [7:0] dt; + reg [7:0] dt_int; + reg [63:0] dt_calc; + + reg [7:0] pm_rise_frac; + reg [7:0] pm_fall_frac; + + reg [31:0] a_per_in_octets; + reg [31:0] a_phase_in_cycles; + + parameter precision = 0.125; + + reg [31:0] phase_fixed; // changed to 31:0 from 32:1 jt 5/2/11 + reg [31: 0] phase_pos; + reg [31: 0] phase_vco; + reg [31:0] temp;// changed to 31:0 from 32:1 jt 5/2/11 + reg [13:0] div_calc; + reg [16:0] phase_calc; + + begin + `ifdef DEBUG + $display("pll_frac_count_calc- divide:%h, phase:%d, duty_cycle:%d", + divide, phase, duty_cycle); + `endif + + //convert phase to fixed + if ((phase < -360000) || (phase > 360000)) begin +`ifndef SYNTHESIS + $display("ERROR: phase of $phase is not between -360000 and 360000"); + `endif + $finish; + end + + + // Return value is + // Transfer data + // RESERVED [37:36] + // FRAC_TIME [35:33] + // FRAC_WF_FALL [32] + // Upper address is: + // RESERVED [31:26] + // MX [25:24] + // EDGE [23] + // NOCOUNT [22] + // DELAY_TIME [21:16] + // Lower Address is: + // PHASE_MUX [15:13] + // RESERVED [12] + // HIGH_TIME [11:6] + // LOW_TIME [5:0] + + + + clkout0_divide_frac = frac / 125; + clkout0_divide_int = divide; + + even_part_high = clkout0_divide_int >> 1;//$rtoi(clkout0_divide_int / 2); + even_part_low = even_part_high; + + odd = clkout0_divide_int - even_part_high - even_part_low; + odd_and_frac = (8*odd) + clkout0_divide_frac; + + lt_frac = even_part_high - (odd_and_frac <= 9);//IF(odd_and_frac>9,even_part_high, even_part_high - 1) + ht_frac = even_part_low - (odd_and_frac <= 8);//IF(odd_and_frac>8,even_part_low, even_part_low- 1) + + pm_fall = {odd[6:0],2'b00} + {6'h00, clkout0_divide_frac[2:1]}; // using >> instead of clkout0_divide_frac / 2 + pm_rise = 0; //0 + + wf_fall_frac = (odd_and_frac >=2) && (odd_and_frac <=9);//IF(odd_and_frac>=2,IF(odd_and_frac <= 9,1,0),0) + wf_rise_frac = (odd_and_frac >=1) && (odd_and_frac <=8);//IF(odd_and_frac>=1,IF(odd_and_frac <= 8,1,0),0) + + + + //Calculate phase in fractional cycles + a_per_in_octets = (8 * divide) + (frac / 125) ; + a_phase_in_cycles = (phase+10) * a_per_in_octets / 360000 ;//Adding 1 due to rounding errors + pm_rise_frac = (a_phase_in_cycles[7:0] ==8'h00)?8'h00:a_phase_in_cycles[7:0] - {a_phase_in_cycles[7:3],3'b000}; + + dt_calc = ((phase+10) * a_per_in_octets / 8 )/360000 ;//TRUNC(phase* divide / 360); //or_simply (a_per_in_octets / 8) + dt = dt_calc[7:0]; + + pm_rise_frac_filtered = (pm_rise_frac >=8) ? (pm_rise_frac ) - 8: pm_rise_frac ; //((phase_fixed * (divide + frac / 1000)) / 360) - {pm_rise_frac[7:3],3'b000};//$rtoi(clkout0_phase * clkout0_divide / 45);//a; + + dt_int = dt + (& pm_rise_frac[7:4]); //IF(pm_rise_overwriting>7,dt+1,dt) + pm_fall_frac = pm_fall + pm_rise_frac; + pm_fall_frac_filtered = pm_fall + pm_rise_frac - {pm_fall_frac[7:3], 3'b000}; + + div_calc = mmcm_pll_divider(divide, duty_cycle); //Use to determine edge[7], no count[6] + phase_calc = mmcm_pll_phase(divide, phase);// returns{mx[1:0], phase_mux[2:0], delay_time[5:0]} + + mmcm_pll_frac_count_calc[37:0] = + { 2'b00, pm_fall_frac_filtered[2:0], wf_fall_frac, + 1'b0, clkout0_divide_frac[2:0], 1'b1, wf_rise_frac, phase_calc[10:9], div_calc[13:12], dt[5:0], + 3'b000, 1'b0, ht_frac[5:0], lt_frac[5:0] //Removed PM_Rise bits + } ; + + `ifdef DEBUG + $display("-%d.%d p%d>> :DADDR_9_15 frac30to28.frac_en.wf_r_frac.dt:%b%d%d_%b:DADDR_7_13 pm_f_frac_filtered_29to27.wf_f_frac_26:%b%d:DADDR_8_14.pm_r_frac_filt_15to13.ht_frac.lt_frac:%b%b%b:", divide, frac, phase, clkout0_divide_frac, 1, wf_rise_frac, dt, pm_fall_frac_filtered, wf_fall_frac, 3'b000, ht_frac, lt_frac); + `endif + + end +endfunction + diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/activehdl/README.txt b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/activehdl/README.txt new file mode 100644 index 0000000..e749064 --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/activehdl/README.txt @@ -0,0 +1,50 @@ +################################################################################ +# Vivado (TM) v2024.1 (64-bit) +# +# README.txt: Please read the sections below to understand the steps required to +# run the exported script and how to fetch design source file details +# from the file_info.txt file. +# +# Generated by export_simulation on Wed Feb 26 11:53:03 CET 2025 +# +################################################################################ + +1. Steps to run the generated simulation script + +From the shell prompt in the current directory, issue the following command:- + +./clk_wiz_0.sh + +This command will launch the 'compile', 'elaborate' and 'simulate' functions +implemented in the script file for the 3-step flow. These functions are called +from the main 'run' function in the script file. + +The 'run' function first calls the 'check_args' function, the purpose of which +is to verify the generated script arguments and print error if incorrect switch +is specified. The 'run' function then calls the 'setup' function, the purpose of +which is to specify custom or initialization commands. The function also executes +following sub-functions:- +'reset_run' if -reset_run switch is specified. +'reset_log' if -reset_log switch is specified. + +The purpose of 'reset_run' function' is to delete the simulator generated design +data from the previous run and the purpose of 'reset_log' function' is to delete +the simulator generated log files. + +The 'run' function then calls the 'init_lib' function, the purpose of which is to +create design library mappings and directories. This function is called before the +'compile' step. By default, if '-step' switch is specified with the script then the +script will execute that specfic step, else it will execute all steps applicable +for the target simulator. + +For more information on the script, please type './clk_wiz_0.sh -help' + +2. Design source file information + +export_simulation generates a 'file_info.txt' file that contains design file information +based on the compile order when export_simulation was executed from Vivado. The file +contains information about the file name, type, library it is compiled into, whether +it is part of the IP, associated library, file path information in a comma separated +format. This file can be parsed to extract the required information for generating a +custom script or can be read from verification test infra. + diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/activehdl/clk_wiz_0.sh b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/activehdl/clk_wiz_0.sh new file mode 100755 index 0000000..74d9461 --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/activehdl/clk_wiz_0.sh @@ -0,0 +1,258 @@ +#!/usr/bin/env bash +#********************************************************************************************************** +# Vivado (TM) v2024.1 (64-bit) +# +# Script generated by Vivado on Wed Feb 26 11:53:03 CET 2025 +# SW Build 5076996 on Wed May 22 18:36:09 MDT 2024 +# +# Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. +# Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. +# +# Filename : clk_wiz_0.sh +# Simulator : Aldec Active-HDL Simulator +# Description : Simulation script generated by export_simulation Tcl command +# Purpose : Run 'compile', 'elaborate', 'simulate' steps for compiling, elaborating and simulating the +# design. The script will copy the library mapping file from the compiled library directory, +# create design library directories and library mappings in the mapping file. +# +# Usage : clk_wiz_0.sh +# clk_wiz_0.sh [-lib_map_path] [-step] [-keep_index] [-noclean_files]* +# clk_wiz_0.sh [-reset_run] +# clk_wiz_0.sh [-reset_log] +# clk_wiz_0.sh [-help] +# +# * The -noclean_files switch is deprecated and will not peform any function (by default, the +# simulator generated files will not be removed unless -reset_run switch is used) +# +# Prerequisite : Before running export_simulation, you must first compile the AMD simulation library +# using the 'compile_simlib' Tcl command (for more information, run 'compile_simlib -help' +# command in the Vivado Tcl shell). After compiling the library, specify the -lib_map_path +# switch with the directory path where the library is created while generating the script +# with export_simulation. +# +# Alternatively, you can set the library path by setting the following project property:- +# +# set_property compxlib.<simulator>_compiled_library_dir <path> [current_project] +# +# You can also point to the simulation library by either setting the 'lib_map_path' global +# variable in this script or specify it with the '-lib_map_path' switch while executing this +# script (type 'clk_wiz_0.sh -help' for more information). +# +# Note: For pure RTL based designs, the -lib_map_path switch can be specified later with the +# generated script, but if design is targetted for system simulation containing SystemC/C++/C +# sources, then the library path MUST be specified upfront when calling export_simulation. +# +# For more information, refer 'Vivado Design Suite User Guide:Logic simulation (UG900)' +# +#********************************************************************************************************** + +# script info +echo -e "clk_wiz_0.sh - Script generated by export_simulation (Vivado v2024.1 (64-bit)-id)\n" + +# main steps +run() +{ + check_args $* + setup + if [[ ($b_step == 1) ]]; then + case $step in + "compile" ) + init_lib + compile + ;; + "simulate" ) + simulate + ;; + * ) + echo -e "ERROR: Invalid or missing step '$step' (type \"./clk_wiz_0.sh -help\" for more information)\n" + exit 1 + esac + else + init_lib + compile + simulate + fi +} + +# RUN_STEP: <compile> +compile() +{ + runvsimsa -do "do {compile.do}" 2>&1 | tee -a compile.log +} + +# RUN_STEP: <simulate> +simulate() +{ + runvsimsa -l simulate.log -do "do {simulate.do}" +} + +# STEP: setup +setup() +{ + # delete previous files for a clean rerun + if [[ ($b_reset_run == 1) ]]; then + reset_run + echo -e "INFO: Simulation run files deleted.\n" + exit 0 + fi + + # delete previous log files + if [[ ($b_reset_log == 1) ]]; then + reset_log + echo -e "INFO: Simulation run log files deleted.\n" + exit 0 + fi + + # add any setup/initialization commands here:- + + # <user specific commands> + +} + +# simulator index file/library directory processing +init_lib() +{ + if [[ ($b_keep_index == 1) ]]; then + # keep previous design library mappings + true + else + # map simulator index file + map_setup_file + fi +} + +# map library.cfg file +map_setup_file() +{ + file="library.cfg" + if [[ ($lib_map_path != "") ]]; then + src_file="$lib_map_path/$file" + if [[ -e $src_file ]]; then + vmap -link $lib_map_path + fi + fi +} + +# delete generated data from the previous run +reset_run() +{ + files_to_remove=(compile.log elaboration.log simulate.log dataset.asdb work activehdl) + for (( i=0; i<${#files_to_remove[*]}; i++ )); do + file="${files_to_remove[i]}" + if [[ -e $file ]]; then + rm -rf $file + fi + done +} + +# delete generated log files from the previous run +reset_log() +{ + files_to_remove=(compile.log elaboration.log simulate.log dataset.asdb) + for (( i=0; i<${#files_to_remove[*]}; i++ )); do + file="${files_to_remove[i]}" + if [[ -e $file ]]; then + rm -rf $file + fi + done +} + +# check switch argument value +check_arg_value() +{ + if [[ ($1 == "-step") && (($2 != "compile") && ($2 != "simulate")) ]];then + echo -e "ERROR: Invalid or missing step '$2' (type \"./top.sh -help\" for more information)\n" + exit 1 + fi + + if [[ ($1 == "-lib_map_path") && ($2 == "") ]];then + echo -e "ERROR: Simulation library directory path not specified (type \"./clk_wiz_0.sh -help\" for more information)\n" + exit 1 + fi +} + +# check command line arguments +check_args() +{ + arg_count=$# + if [[ ("$#" == 1) && (("$1" == "-help") || ("$1" == "-h")) ]]; then + usage + fi + while [[ "$#" -gt 0 ]]; do + case $1 in + -step) check_arg_value $1 $2;step=$2; b_step=1; shift;; + -lib_map_path) check_arg_value $1 $2;lib_map_path=$2; b_lib_map_path=1; shift;; + -gen_bypass) b_gen_bypass=1 ;; + -reset_run) b_reset_run=1 ;; + -reset_log) b_reset_log=1 ;; + -keep_index) b_keep_index=1 ;; + -noclean_files) b_noclean_files=1 ;; + -help|-h) ;; + *) echo -e "ERROR: Invalid option specified '$1' (type "./top.sh -help" for more information)\n"; exit 1 ;; + esac + shift + done + + # -reset_run is not applicable with other switches + if [[ ("$arg_count" -gt 1) && ($b_reset_run == 1) ]]; then + echo -e "ERROR: -reset_run switch is not applicable with other switches (type \"./top.sh -help\" for more information)\n" + exit 1 + fi + + # -reset_log is not applicable with other switches + if [[ ("$arg_count" -gt 1) && ($b_reset_log == 1) ]]; then + echo -e "ERROR: -reset_log switch is not applicable with other switches (type \"./top.sh -help\" for more information)\n" + exit 1 + fi + + # -keep_index is not applicable with other switches + if [[ ("$arg_count" -gt 1) && ($b_keep_index == 1) ]]; then + echo -e "ERROR: -keep_index switch is not applicable with other switches (type \"./top.sh -help\" for more information)\n" + exit 1 + fi + + # -noclean_files is not applicable with other switches + if [[ ("$arg_count" -gt 1) && ($b_noclean_files == 1) ]]; then + echo -e "ERROR: -noclean_files switch is not applicable with other switches (type \"./top.sh -help\" for more information)\n" + exit 1 + fi +} + +# script usage +usage() +{ + msg="Usage: clk_wiz_0.sh [-help]\n\ +Usage: clk_wiz_0.sh [-step]\n\ +Usage: clk_wiz_0.sh [-lib_map_path]\n\ +Usage: clk_wiz_0.sh [-reset_run]\n\ +Usage: clk_wiz_0.sh [-reset_log]\n\ +Usage: clk_wiz_0.sh [-keep_index]\n\ +Usage: clk_wiz_0.sh [-noclean_files]\n\n\ +[-help] -- Print help information for this script\n\n\ +[-step <name>] -- Execute specified step (compile, simulate)\n\n\ +[-lib_map_path <path>] -- Compiled simulation library directory path. The simulation library is compiled\n\ +using the compile_simlib tcl command. Please see 'compile_simlib -help' for more information.\n\n\ +[-reset_run] -- Delete simulator generated data files from the previous run and recreate simulator setup\n\ +file/library mappings for a clean run. This switch will not execute steps defined in the script.\n\n\ +NOTE: To keep simulator index file settings from the previous run, use the -keep_index switch\n\ +NOTE: To regenerate simulator index file but keep the simulator generated files, use the -noclean_files switch\n\n\ +[-reset_log] -- Delete simulator generated log files from the previous run\n\n\ +[-keep_index] -- Keep simulator index file settings from the previous run\n\n\ +[-noclean_files] -- Reset previous run, but do not remove simulator generated files from the previous run\n" + echo -e $msg + exit 0 +} + +# initialize globals +step="" +lib_map_path="" +b_step=0 +b_lib_map_path=0 +b_gen_bypass=0 +b_reset_run=0 +b_reset_log=0 +b_keep_index=0 +b_noclean_files=0 + +# launch script +run $* diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/activehdl/clk_wiz_0.udo b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/activehdl/clk_wiz_0.udo new file mode 100644 index 0000000..e69de29 diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/activehdl/compile.do b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/activehdl/compile.do new file mode 100644 index 0000000..c65c1fc --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/activehdl/compile.do @@ -0,0 +1,25 @@ +transcript off +onbreak {quit -force} +onerror {quit -force} +transcript on + +vlib work +vlib activehdl/xpm +vlib activehdl/xil_defaultlib + +vmap xpm activehdl/xpm +vmap xil_defaultlib activehdl/xil_defaultlib + +vlog -work xpm -sv2k12 "+incdir+../../../ipstatic" -l xpm -l xil_defaultlib \ +"/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/ip/xpm/xpm_cdc/hdl/xpm_cdc.sv" \ + +vcom -work xpm - \ +"/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/ip/xpm/xpm_VCOMP.vhd" \ + +vlog -work xil_defaultlib -v2k5 "+incdir+../../../ipstatic" -l xpm -l xil_defaultlib \ +"../../../../../src/ip/clk_wiz_0/clk_wiz_0_clk_wiz.v" \ +"../../../../../src/ip/clk_wiz_0/clk_wiz_0.v" \ + +vlog -work xil_defaultlib \ +"glbl.v" + diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/activehdl/file_info.txt b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/activehdl/file_info.txt new file mode 100644 index 0000000..b33b916 --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/activehdl/file_info.txt @@ -0,0 +1,5 @@ +xpm_cdc.sv,systemverilog,xpm,../../../../../../usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/ip/xpm/xpm_cdc/hdl/xpm_cdc.sv,incdir="../../../ipstatic"incdir="../../../ipstatic" +xpm_VCOMP.vhd,vhdl,xpm,../../../../../../usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/ip/xpm/xpm_VCOMP.vhd,incdir="../../../ipstatic"incdir="../../../ipstatic" +clk_wiz_0_clk_wiz.v,verilog,xil_defaultlib,../../../../../src/ip/clk_wiz_0/clk_wiz_0_clk_wiz.v,incdir="../../../ipstatic"incdir="../../../ipstatic" +clk_wiz_0.v,verilog,xil_defaultlib,../../../../../src/ip/clk_wiz_0/clk_wiz_0.v,incdir="../../../ipstatic"incdir="../../../ipstatic" +glbl.v,Verilog,xil_defaultlib,glbl.v diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/activehdl/glbl.v b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/activehdl/glbl.v new file mode 100755 index 0000000..ed3b249 --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/activehdl/glbl.v @@ -0,0 +1,84 @@ +// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $ +`ifndef GLBL +`define GLBL +`timescale 1 ps / 1 ps + +module glbl (); + + parameter ROC_WIDTH = 100000; + parameter TOC_WIDTH = 0; + parameter GRES_WIDTH = 10000; + parameter GRES_START = 10000; + +//-------- STARTUP Globals -------------- + wire GSR; + wire GTS; + wire GWE; + wire PRLD; + wire GRESTORE; + tri1 p_up_tmp; + tri (weak1, strong0) PLL_LOCKG = p_up_tmp; + + wire PROGB_GLBL; + wire CCLKO_GLBL; + wire FCSBO_GLBL; + wire [3:0] DO_GLBL; + wire [3:0] DI_GLBL; + + reg GSR_int; + reg GTS_int; + reg PRLD_int; + reg GRESTORE_int; + +//-------- JTAG Globals -------------- + wire JTAG_TDO_GLBL; + wire JTAG_TCK_GLBL; + wire JTAG_TDI_GLBL; + wire JTAG_TMS_GLBL; + wire JTAG_TRST_GLBL; + + reg JTAG_CAPTURE_GLBL; + reg JTAG_RESET_GLBL; + reg JTAG_SHIFT_GLBL; + reg JTAG_UPDATE_GLBL; + reg JTAG_RUNTEST_GLBL; + + reg JTAG_SEL1_GLBL = 0; + reg JTAG_SEL2_GLBL = 0 ; + reg JTAG_SEL3_GLBL = 0; + reg JTAG_SEL4_GLBL = 0; + + reg JTAG_USER_TDO1_GLBL = 1'bz; + reg JTAG_USER_TDO2_GLBL = 1'bz; + reg JTAG_USER_TDO3_GLBL = 1'bz; + reg JTAG_USER_TDO4_GLBL = 1'bz; + + assign (strong1, weak0) GSR = GSR_int; + assign (strong1, weak0) GTS = GTS_int; + assign (weak1, weak0) PRLD = PRLD_int; + assign (strong1, weak0) GRESTORE = GRESTORE_int; + + initial begin + GSR_int = 1'b1; + PRLD_int = 1'b1; + #(ROC_WIDTH) + GSR_int = 1'b0; + PRLD_int = 1'b0; + end + + initial begin + GTS_int = 1'b1; + #(TOC_WIDTH) + GTS_int = 1'b0; + end + + initial begin + GRESTORE_int = 1'b0; + #(GRES_START); + GRESTORE_int = 1'b1; + #(GRES_WIDTH); + GRESTORE_int = 1'b0; + end + +endmodule +`endif diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/activehdl/simulate.do b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/activehdl/simulate.do new file mode 100644 index 0000000..2bd90be --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/activehdl/simulate.do @@ -0,0 +1,14 @@ +transcript off +onbreak {quit -force} +onerror {quit -force} +transcript on + +asim +access +r +m+clk_wiz_0 -L xpm -L xil_defaultlib -L unisims_ver -L unimacro_ver -L secureip -O2 xil_defaultlib.clk_wiz_0 xil_defaultlib.glbl + +do {clk_wiz_0.udo} + +run + +endsim + +quit -force diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/modelsim/README.txt b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/modelsim/README.txt new file mode 100644 index 0000000..e749064 --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/modelsim/README.txt @@ -0,0 +1,50 @@ +################################################################################ +# Vivado (TM) v2024.1 (64-bit) +# +# README.txt: Please read the sections below to understand the steps required to +# run the exported script and how to fetch design source file details +# from the file_info.txt file. +# +# Generated by export_simulation on Wed Feb 26 11:53:03 CET 2025 +# +################################################################################ + +1. Steps to run the generated simulation script + +From the shell prompt in the current directory, issue the following command:- + +./clk_wiz_0.sh + +This command will launch the 'compile', 'elaborate' and 'simulate' functions +implemented in the script file for the 3-step flow. These functions are called +from the main 'run' function in the script file. + +The 'run' function first calls the 'check_args' function, the purpose of which +is to verify the generated script arguments and print error if incorrect switch +is specified. The 'run' function then calls the 'setup' function, the purpose of +which is to specify custom or initialization commands. The function also executes +following sub-functions:- +'reset_run' if -reset_run switch is specified. +'reset_log' if -reset_log switch is specified. + +The purpose of 'reset_run' function' is to delete the simulator generated design +data from the previous run and the purpose of 'reset_log' function' is to delete +the simulator generated log files. + +The 'run' function then calls the 'init_lib' function, the purpose of which is to +create design library mappings and directories. This function is called before the +'compile' step. By default, if '-step' switch is specified with the script then the +script will execute that specfic step, else it will execute all steps applicable +for the target simulator. + +For more information on the script, please type './clk_wiz_0.sh -help' + +2. Design source file information + +export_simulation generates a 'file_info.txt' file that contains design file information +based on the compile order when export_simulation was executed from Vivado. The file +contains information about the file name, type, library it is compiled into, whether +it is part of the IP, associated library, file path information in a comma separated +format. This file can be parsed to extract the required information for generating a +custom script or can be read from verification test infra. + diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/modelsim/clk_wiz_0.sh b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/modelsim/clk_wiz_0.sh new file mode 100755 index 0000000..8939ec5 --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/modelsim/clk_wiz_0.sh @@ -0,0 +1,287 @@ +#!/usr/bin/env bash +#********************************************************************************************************** +# Vivado (TM) v2024.1 (64-bit) +# +# Script generated by Vivado on Wed Feb 26 11:53:03 CET 2025 +# SW Build 5076996 on Wed May 22 18:36:09 MDT 2024 +# +# Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. +# Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. +# +# Filename : clk_wiz_0.sh +# Simulator : Siemens ModelSim Simulator +# Description : Simulation script generated by export_simulation Tcl command +# Purpose : Run 'compile', 'elaborate', 'simulate' steps for compiling, elaborating and simulating the +# design. The script will copy the library mapping file from the compiled library directory, +# create design library directories and library mappings in the mapping file. +# +# Usage : clk_wiz_0.sh +# clk_wiz_0.sh [-lib_map_path] [-step] [-keep_index] [-noclean_files]* +# clk_wiz_0.sh [-reset_run] +# clk_wiz_0.sh [-reset_log] +# clk_wiz_0.sh [-help] +# +# * The -noclean_files switch is deprecated and will not peform any function (by default, the +# simulator generated files will not be removed unless -reset_run switch is used) +# +# Prerequisite : Before running export_simulation, you must first compile the AMD simulation library +# using the 'compile_simlib' Tcl command (for more information, run 'compile_simlib -help' +# command in the Vivado Tcl shell). After compiling the library, specify the -lib_map_path +# switch with the directory path where the library is created while generating the script +# with export_simulation. +# +# Alternatively, you can set the library path by setting the following project property:- +# +# set_property compxlib.<simulator>_compiled_library_dir <path> [current_project] +# +# You can also point to the simulation library by either setting the 'lib_map_path' global +# variable in this script or specify it with the '-lib_map_path' switch while executing this +# script (type 'clk_wiz_0.sh -help' for more information). +# +# Note: For pure RTL based designs, the -lib_map_path switch can be specified later with the +# generated script, but if design is targetted for system simulation containing SystemC/C++/C +# sources, then the library path MUST be specified upfront when calling export_simulation. +# +# For more information, refer 'Vivado Design Suite User Guide:Logic simulation (UG900)' +# +#********************************************************************************************************** + +# catch pipeline exit status +set -Eeuo pipefail + +# script info +echo -e "clk_wiz_0.sh - Script generated by export_simulation (Vivado v2024.1 (64-bit)-id)\n" + +# main steps +run() +{ + check_args $* + setup + if [[ ($b_step == 1) ]]; then + case $step in + "compile" ) + init_lib + compile + ;; + "simulate" ) + simulate + ;; + * ) + echo -e "ERROR: Invalid or missing step '$step' (type \"./clk_wiz_0.sh -help\" for more information)\n" + exit 1 + esac + else + init_lib + compile + simulate + fi +} + +# RUN_STEP: <compile> +compile() +{ + source compile.do 2>&1 | tee -a compile.log +} + +# RUN_STEP: <simulate> +simulate() +{ + vsim -c -do "do {simulate.do}" -l simulate.log +} + +# STEP: setup +setup() +{ + # delete previous files for a clean rerun + if [[ ($b_reset_run == 1) ]]; then + reset_run + echo -e "INFO: Simulation run files deleted.\n" + exit 0 + fi + + # delete previous log files + if [[ ($b_reset_log == 1) ]]; then + reset_log + echo -e "INFO: Simulation run log files deleted.\n" + exit 0 + fi + + # add any setup/initialization commands here:- + + # <user specific commands> + +} + +# simulator index file/library directory processing +init_lib() +{ + if [[ ($b_keep_index == 1) ]]; then + # keep previous simulator index file + true + else + # copy simulator index file to current directory + copy_setup_file + fi + + if [[ ($lib_map_path != "") ]]; then + ref_lib_dir=$lib_map_path + fi + + if [[ ($b_keep_index == 1) ]]; then + # do not recreate design library directories + true + else + # create design library directories + create_lib_dir + fi +} + +# copy modelsim.ini file +copy_setup_file() +{ + file="modelsim.ini" + if [[ ($lib_map_path != "") && !(-e $lib_map_path) ]]; then + echo -e "ERROR: Compiled simulation library directory path not specified or does not exist (type "./top.sh -help" for more information)\n" + fi + + if [[ ($lib_map_path != "") ]]; then + src_file="$lib_map_path/$file" + if [[ -e $src_file ]]; then + cp $src_file . + fi + fi +} + +# create design library directory +create_lib_dir() +{ + lib_dir="modelsim_lib" + if [[ -e $lib_dir ]]; then + rm -rf $lib_dir + fi + mkdir $lib_dir +} + +# delete generated data from the previous run +reset_run() +{ + files_to_remove=(compile.log elaborate.log simulate.log vsim.wlf modelsim_lib) + for (( i=0; i<${#files_to_remove[*]}; i++ )); do + file="${files_to_remove[i]}" + if [[ -e $file ]]; then + rm -rf $file + fi + done +} + +# delete generated log files from the previous run +reset_log() +{ + files_to_remove=(compile.log elaborate.log simulate.log) + for (( i=0; i<${#files_to_remove[*]}; i++ )); do + file="${files_to_remove[i]}" + if [[ -e $file ]]; then + rm -rf $file + fi + done +} + +# check switch argument value +check_arg_value() +{ + if [[ ($1 == "-step") && (($2 != "compile") && ($2 != "simulate")) ]];then + echo -e "ERROR: Invalid or missing step '$2' (type \"./top.sh -help\" for more information)\n" + exit 1 + fi + + if [[ ($1 == "-lib_map_path") && ($2 == "") ]];then + echo -e "ERROR: Simulation library directory path not specified (type \"./clk_wiz_0.sh -help\" for more information)\n" + exit 1 + fi +} + +# check command line arguments +check_args() +{ + arg_count=$# + if [[ ("$#" == 1) && (("$1" == "-help") || ("$1" == "-h")) ]]; then + usage + fi + while [[ "$#" -gt 0 ]]; do + case $1 in + -step) check_arg_value $1 $2;step=$2; b_step=1; shift;; + -lib_map_path) check_arg_value $1 $2;lib_map_path=$2; b_lib_map_path=1; shift;; + -gen_bypass) b_gen_bypass=1 ;; + -reset_run) b_reset_run=1 ;; + -reset_log) b_reset_log=1 ;; + -keep_index) b_keep_index=1 ;; + -noclean_files) b_noclean_files=1 ;; + -help|-h) ;; + *) echo -e "ERROR: Invalid option specified '$1' (type "./top.sh -help" for more information)\n"; exit 1 ;; + esac + shift + done + + # -reset_run is not applicable with other switches + if [[ ("$arg_count" -gt 1) && ($b_reset_run == 1) ]]; then + echo -e "ERROR: -reset_run switch is not applicable with other switches (type \"./top.sh -help\" for more information)\n" + exit 1 + fi + + # -reset_log is not applicable with other switches + if [[ ("$arg_count" -gt 1) && ($b_reset_log == 1) ]]; then + echo -e "ERROR: -reset_log switch is not applicable with other switches (type \"./top.sh -help\" for more information)\n" + exit 1 + fi + + # -keep_index is not applicable with other switches + if [[ ("$arg_count" -gt 1) && ($b_keep_index == 1) ]]; then + echo -e "ERROR: -keep_index switch is not applicable with other switches (type \"./top.sh -help\" for more information)\n" + exit 1 + fi + + # -noclean_files is not applicable with other switches + if [[ ("$arg_count" -gt 1) && ($b_noclean_files == 1) ]]; then + echo -e "ERROR: -noclean_files switch is not applicable with other switches (type \"./top.sh -help\" for more information)\n" + exit 1 + fi +} + +# script usage +usage() +{ + msg="Usage: clk_wiz_0.sh [-help]\n\ +Usage: clk_wiz_0.sh [-step]\n\ +Usage: clk_wiz_0.sh [-lib_map_path]\n\ +Usage: clk_wiz_0.sh [-reset_run]\n\ +Usage: clk_wiz_0.sh [-reset_log]\n\ +Usage: clk_wiz_0.sh [-keep_index]\n\ +Usage: clk_wiz_0.sh [-noclean_files]\n\n\ +[-help] -- Print help information for this script\n\n\ +[-step <name>] -- Execute specified step (compile, simulate)\n\n\ +[-lib_map_path <path>] -- Compiled simulation library directory path. The simulation library is compiled\n\ +using the compile_simlib tcl command. Please see 'compile_simlib -help' for more information.\n\n\ +[-reset_run] -- Delete simulator generated data files from the previous run and recreate simulator setup\n\ +file/library mappings for a clean run. This switch will not execute steps defined in the script.\n\n\ +NOTE: To keep simulator index file settings from the previous run, use the -keep_index switch\n\ +NOTE: To regenerate simulator index file but keep the simulator generated files, use the -noclean_files switch\n\n\ +[-reset_log] -- Delete simulator generated log files from the previous run\n\n\ +[-keep_index] -- Keep simulator index file settings from the previous run\n\n\ +[-noclean_files] -- Reset previous run, but do not remove simulator generated files from the previous run\n" + echo -e $msg + exit 0 +} + +# initialize globals +step="" +lib_map_path="" +b_step=0 +b_lib_map_path=0 +b_gen_bypass=0 +b_reset_run=0 +b_reset_log=0 +b_keep_index=0 +b_noclean_files=0 + +# launch script +run $* diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/modelsim/clk_wiz_0.udo b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/modelsim/clk_wiz_0.udo new file mode 100644 index 0000000..e69de29 diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/modelsim/compile.do b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/modelsim/compile.do new file mode 100644 index 0000000..270653b --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/modelsim/compile.do @@ -0,0 +1,22 @@ +vlib modelsim_lib/work +vlib modelsim_lib/msim + +vlib modelsim_lib/msim/xpm +vlib modelsim_lib/msim/xil_defaultlib + +vmap xpm modelsim_lib/msim/xpm +vmap xil_defaultlib modelsim_lib/msim/xil_defaultlib + +vlog -work xpm -64 -incr -mfcu -sv "+incdir+../../../ipstatic" \ +"/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/ip/xpm/xpm_cdc/hdl/xpm_cdc.sv" \ + +vcom -work xpm -64 -93 \ +"/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/ip/xpm/xpm_VCOMP.vhd" \ + +vlog -work xil_defaultlib -64 -incr -mfcu "+incdir+../../../ipstatic" \ +"../../../../../src/ip/clk_wiz_0/clk_wiz_0_clk_wiz.v" \ +"../../../../../src/ip/clk_wiz_0/clk_wiz_0.v" \ + +vlog -work xil_defaultlib \ +"glbl.v" + diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/modelsim/file_info.txt b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/modelsim/file_info.txt new file mode 100644 index 0000000..b33b916 --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/modelsim/file_info.txt @@ -0,0 +1,5 @@ +xpm_cdc.sv,systemverilog,xpm,../../../../../../usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/ip/xpm/xpm_cdc/hdl/xpm_cdc.sv,incdir="../../../ipstatic"incdir="../../../ipstatic" +xpm_VCOMP.vhd,vhdl,xpm,../../../../../../usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/ip/xpm/xpm_VCOMP.vhd,incdir="../../../ipstatic"incdir="../../../ipstatic" +clk_wiz_0_clk_wiz.v,verilog,xil_defaultlib,../../../../../src/ip/clk_wiz_0/clk_wiz_0_clk_wiz.v,incdir="../../../ipstatic"incdir="../../../ipstatic" +clk_wiz_0.v,verilog,xil_defaultlib,../../../../../src/ip/clk_wiz_0/clk_wiz_0.v,incdir="../../../ipstatic"incdir="../../../ipstatic" +glbl.v,Verilog,xil_defaultlib,glbl.v diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/modelsim/glbl.v b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/modelsim/glbl.v new file mode 100755 index 0000000..ed3b249 --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/modelsim/glbl.v @@ -0,0 +1,84 @@ +// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $ +`ifndef GLBL +`define GLBL +`timescale 1 ps / 1 ps + +module glbl (); + + parameter ROC_WIDTH = 100000; + parameter TOC_WIDTH = 0; + parameter GRES_WIDTH = 10000; + parameter GRES_START = 10000; + +//-------- STARTUP Globals -------------- + wire GSR; + wire GTS; + wire GWE; + wire PRLD; + wire GRESTORE; + tri1 p_up_tmp; + tri (weak1, strong0) PLL_LOCKG = p_up_tmp; + + wire PROGB_GLBL; + wire CCLKO_GLBL; + wire FCSBO_GLBL; + wire [3:0] DO_GLBL; + wire [3:0] DI_GLBL; + + reg GSR_int; + reg GTS_int; + reg PRLD_int; + reg GRESTORE_int; + +//-------- JTAG Globals -------------- + wire JTAG_TDO_GLBL; + wire JTAG_TCK_GLBL; + wire JTAG_TDI_GLBL; + wire JTAG_TMS_GLBL; + wire JTAG_TRST_GLBL; + + reg JTAG_CAPTURE_GLBL; + reg JTAG_RESET_GLBL; + reg JTAG_SHIFT_GLBL; + reg JTAG_UPDATE_GLBL; + reg JTAG_RUNTEST_GLBL; + + reg JTAG_SEL1_GLBL = 0; + reg JTAG_SEL2_GLBL = 0 ; + reg JTAG_SEL3_GLBL = 0; + reg JTAG_SEL4_GLBL = 0; + + reg JTAG_USER_TDO1_GLBL = 1'bz; + reg JTAG_USER_TDO2_GLBL = 1'bz; + reg JTAG_USER_TDO3_GLBL = 1'bz; + reg JTAG_USER_TDO4_GLBL = 1'bz; + + assign (strong1, weak0) GSR = GSR_int; + assign (strong1, weak0) GTS = GTS_int; + assign (weak1, weak0) PRLD = PRLD_int; + assign (strong1, weak0) GRESTORE = GRESTORE_int; + + initial begin + GSR_int = 1'b1; + PRLD_int = 1'b1; + #(ROC_WIDTH) + GSR_int = 1'b0; + PRLD_int = 1'b0; + end + + initial begin + GTS_int = 1'b1; + #(TOC_WIDTH) + GTS_int = 1'b0; + end + + initial begin + GRESTORE_int = 1'b0; + #(GRES_START); + GRESTORE_int = 1'b1; + #(GRES_WIDTH); + GRESTORE_int = 1'b0; + end + +endmodule +`endif diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/modelsim/simulate.do b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/modelsim/simulate.do new file mode 100644 index 0000000..157ea1c --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/modelsim/simulate.do @@ -0,0 +1,19 @@ +onbreak {quit -f} +onerror {quit -f} + +vsim -voptargs="+acc" -L xpm -L xil_defaultlib -L unisims_ver -L unimacro_ver -L secureip -lib xil_defaultlib xil_defaultlib.clk_wiz_0 xil_defaultlib.glbl + +set NumericStdNoWarnings 1 +set StdArithNoWarnings 1 + +do {wave.do} + +view wave +view structure +view signals + +do {clk_wiz_0.udo} + +run 1000ns + +quit -force diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/modelsim/wave.do b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/modelsim/wave.do new file mode 100644 index 0000000..70157b0 --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/modelsim/wave.do @@ -0,0 +1,2 @@ +add wave * +add wave /glbl/GSR diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/questa/README.txt b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/questa/README.txt new file mode 100644 index 0000000..e749064 --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/questa/README.txt @@ -0,0 +1,50 @@ +################################################################################ +# Vivado (TM) v2024.1 (64-bit) +# +# README.txt: Please read the sections below to understand the steps required to +# run the exported script and how to fetch design source file details +# from the file_info.txt file. +# +# Generated by export_simulation on Wed Feb 26 11:53:03 CET 2025 +# +################################################################################ + +1. Steps to run the generated simulation script + +From the shell prompt in the current directory, issue the following command:- + +./clk_wiz_0.sh + +This command will launch the 'compile', 'elaborate' and 'simulate' functions +implemented in the script file for the 3-step flow. These functions are called +from the main 'run' function in the script file. + +The 'run' function first calls the 'check_args' function, the purpose of which +is to verify the generated script arguments and print error if incorrect switch +is specified. The 'run' function then calls the 'setup' function, the purpose of +which is to specify custom or initialization commands. The function also executes +following sub-functions:- +'reset_run' if -reset_run switch is specified. +'reset_log' if -reset_log switch is specified. + +The purpose of 'reset_run' function' is to delete the simulator generated design +data from the previous run and the purpose of 'reset_log' function' is to delete +the simulator generated log files. + +The 'run' function then calls the 'init_lib' function, the purpose of which is to +create design library mappings and directories. This function is called before the +'compile' step. By default, if '-step' switch is specified with the script then the +script will execute that specfic step, else it will execute all steps applicable +for the target simulator. + +For more information on the script, please type './clk_wiz_0.sh -help' + +2. Design source file information + +export_simulation generates a 'file_info.txt' file that contains design file information +based on the compile order when export_simulation was executed from Vivado. The file +contains information about the file name, type, library it is compiled into, whether +it is part of the IP, associated library, file path information in a comma separated +format. This file can be parsed to extract the required information for generating a +custom script or can be read from verification test infra. + diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/questa/clk_wiz_0.sh b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/questa/clk_wiz_0.sh new file mode 100755 index 0000000..eaab4da --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/questa/clk_wiz_0.sh @@ -0,0 +1,297 @@ +#!/usr/bin/env bash +#********************************************************************************************************** +# Vivado (TM) v2024.1 (64-bit) +# +# Script generated by Vivado on Wed Feb 26 11:53:03 CET 2025 +# SW Build 5076996 on Wed May 22 18:36:09 MDT 2024 +# +# Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. +# Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. +# +# Filename : clk_wiz_0.sh +# Simulator : Siemens Questa Advanced Simulator +# Description : Simulation script generated by export_simulation Tcl command +# Purpose : Run 'compile', 'elaborate', 'simulate' steps for compiling, elaborating and simulating the +# design. The script will copy the library mapping file from the compiled library directory, +# create design library directories and library mappings in the mapping file. +# +# Usage : clk_wiz_0.sh +# clk_wiz_0.sh [-lib_map_path] [-step] [-keep_index] [-noclean_files]* +# clk_wiz_0.sh [-reset_run] +# clk_wiz_0.sh [-reset_log] +# clk_wiz_0.sh [-help] +# +# * The -noclean_files switch is deprecated and will not peform any function (by default, the +# simulator generated files will not be removed unless -reset_run switch is used) +# +# Prerequisite : Before running export_simulation, you must first compile the AMD simulation library +# using the 'compile_simlib' Tcl command (for more information, run 'compile_simlib -help' +# command in the Vivado Tcl shell). After compiling the library, specify the -lib_map_path +# switch with the directory path where the library is created while generating the script +# with export_simulation. +# +# Alternatively, you can set the library path by setting the following project property:- +# +# set_property compxlib.<simulator>_compiled_library_dir <path> [current_project] +# +# You can also point to the simulation library by either setting the 'lib_map_path' global +# variable in this script or specify it with the '-lib_map_path' switch while executing this +# script (type 'clk_wiz_0.sh -help' for more information). +# +# Note: For pure RTL based designs, the -lib_map_path switch can be specified later with the +# generated script, but if design is targetted for system simulation containing SystemC/C++/C +# sources, then the library path MUST be specified upfront when calling export_simulation. +# +# For more information, refer 'Vivado Design Suite User Guide:Logic simulation (UG900)' +# +#********************************************************************************************************** + +# catch pipeline exit status +set -Eeuo pipefail + +# script info +echo -e "clk_wiz_0.sh - Script generated by export_simulation (Vivado v2024.1 (64-bit)-id)\n" + +# main steps +run() +{ + check_args $* + setup + if [[ ($b_step == 1) ]]; then + case $step in + "compile" ) + init_lib + compile + ;; + "elaborate" ) + elaborate + ;; + "simulate" ) + simulate + ;; + * ) + echo -e "ERROR: Invalid or missing step '$step' (type \"./clk_wiz_0.sh -help\" for more information)\n" + exit 1 + esac + else + init_lib + compile + elaborate + simulate + fi +} + +# RUN_STEP: <compile> +compile() +{ + source compile.do 2>&1 | tee -a compile.log +} + +# RUN_STEP: <elaborate> +elaborate() +{ + source elaborate.do 2>&1 | tee elaborate.log +} + +# RUN_STEP: <simulate> +simulate() +{ + vsim -64 -c -do "do {simulate.do}" -l simulate.log +} + +# STEP: setup +setup() +{ + # delete previous files for a clean rerun + if [[ ($b_reset_run == 1) ]]; then + reset_run + echo -e "INFO: Simulation run files deleted.\n" + exit 0 + fi + + # delete previous log files + if [[ ($b_reset_log == 1) ]]; then + reset_log + echo -e "INFO: Simulation run log files deleted.\n" + exit 0 + fi + + # add any setup/initialization commands here:- + + # <user specific commands> + +} + +# simulator index file/library directory processing +init_lib() +{ + if [[ ($b_keep_index == 1) ]]; then + # keep previous simulator index file + true + else + # copy simulator index file to current directory + copy_setup_file + fi + + if [[ ($lib_map_path != "") ]]; then + ref_lib_dir=$lib_map_path + fi + + if [[ ($b_keep_index == 1) ]]; then + # do not recreate design library directories + true + else + # create design library directories + create_lib_dir + fi +} + +# copy modelsim.ini file +copy_setup_file() +{ + file="modelsim.ini" + if [[ ($lib_map_path != "") && !(-e $lib_map_path) ]]; then + echo -e "ERROR: Compiled simulation library directory path not specified or does not exist (type "./top.sh -help" for more information)\n" + fi + + if [[ ($lib_map_path != "") ]]; then + src_file="$lib_map_path/$file" + if [[ -e $src_file ]]; then + cp $src_file . + fi + fi +} + +# create design library directory +create_lib_dir() +{ + lib_dir="questa_lib" + if [[ -e $lib_dir ]]; then + rm -rf $lib_dir + fi + mkdir $lib_dir +} + +# delete generated data from the previous run +reset_run() +{ + files_to_remove=(compile.log elaborate.log simulate.log vsim.wlf questa_lib) + for (( i=0; i<${#files_to_remove[*]}; i++ )); do + file="${files_to_remove[i]}" + if [[ -e $file ]]; then + rm -rf $file + fi + done +} + +# delete generated log files from the previous run +reset_log() +{ + files_to_remove=(compile.log elaborate.log simulate.log) + for (( i=0; i<${#files_to_remove[*]}; i++ )); do + file="${files_to_remove[i]}" + if [[ -e $file ]]; then + rm -rf $file + fi + done +} + +# check switch argument value +check_arg_value() +{ + if [[ ($1 == "-step") && (($2 != "compile") && ($2 != "elaborate") && ($2 != "simulate")) ]];then + echo -e "ERROR: Invalid or missing step '$2' (type \"./top.sh -help\" for more information)\n" + exit 1 + fi + + if [[ ($1 == "-lib_map_path") && ($2 == "") ]];then + echo -e "ERROR: Simulation library directory path not specified (type \"./clk_wiz_0.sh -help\" for more information)\n" + exit 1 + fi +} + +# check command line arguments +check_args() +{ + arg_count=$# + if [[ ("$#" == 1) && (("$1" == "-help") || ("$1" == "-h")) ]]; then + usage + fi + while [[ "$#" -gt 0 ]]; do + case $1 in + -step) check_arg_value $1 $2;step=$2; b_step=1; shift;; + -lib_map_path) check_arg_value $1 $2;lib_map_path=$2; b_lib_map_path=1; shift;; + -gen_bypass) b_gen_bypass=1 ;; + -reset_run) b_reset_run=1 ;; + -reset_log) b_reset_log=1 ;; + -keep_index) b_keep_index=1 ;; + -noclean_files) b_noclean_files=1 ;; + -help|-h) ;; + *) echo -e "ERROR: Invalid option specified '$1' (type "./top.sh -help" for more information)\n"; exit 1 ;; + esac + shift + done + + # -reset_run is not applicable with other switches + if [[ ("$arg_count" -gt 1) && ($b_reset_run == 1) ]]; then + echo -e "ERROR: -reset_run switch is not applicable with other switches (type \"./top.sh -help\" for more information)\n" + exit 1 + fi + + # -reset_log is not applicable with other switches + if [[ ("$arg_count" -gt 1) && ($b_reset_log == 1) ]]; then + echo -e "ERROR: -reset_log switch is not applicable with other switches (type \"./top.sh -help\" for more information)\n" + exit 1 + fi + + # -keep_index is not applicable with other switches + if [[ ("$arg_count" -gt 1) && ($b_keep_index == 1) ]]; then + echo -e "ERROR: -keep_index switch is not applicable with other switches (type \"./top.sh -help\" for more information)\n" + exit 1 + fi + + # -noclean_files is not applicable with other switches + if [[ ("$arg_count" -gt 1) && ($b_noclean_files == 1) ]]; then + echo -e "ERROR: -noclean_files switch is not applicable with other switches (type \"./top.sh -help\" for more information)\n" + exit 1 + fi +} + +# script usage +usage() +{ + msg="Usage: clk_wiz_0.sh [-help]\n\ +Usage: clk_wiz_0.sh [-step]\n\ +Usage: clk_wiz_0.sh [-lib_map_path]\n\ +Usage: clk_wiz_0.sh [-reset_run]\n\ +Usage: clk_wiz_0.sh [-reset_log]\n\ +Usage: clk_wiz_0.sh [-keep_index]\n\ +Usage: clk_wiz_0.sh [-noclean_files]\n\n\ +[-help] -- Print help information for this script\n\n\ +[-step <name>] -- Execute specified step (compile, elaborate, simulate)\n\n\ +[-lib_map_path <path>] -- Compiled simulation library directory path. The simulation library is compiled\n\ +using the compile_simlib tcl command. Please see 'compile_simlib -help' for more information.\n\n\ +[-reset_run] -- Delete simulator generated data files from the previous run and recreate simulator setup\n\ +file/library mappings for a clean run. This switch will not execute steps defined in the script.\n\n\ +NOTE: To keep simulator index file settings from the previous run, use the -keep_index switch\n\ +NOTE: To regenerate simulator index file but keep the simulator generated files, use the -noclean_files switch\n\n\ +[-reset_log] -- Delete simulator generated log files from the previous run\n\n\ +[-keep_index] -- Keep simulator index file settings from the previous run\n\n\ +[-noclean_files] -- Reset previous run, but do not remove simulator generated files from the previous run\n" + echo -e $msg + exit 0 +} + +# initialize globals +step="" +lib_map_path="" +b_step=0 +b_lib_map_path=0 +b_gen_bypass=0 +b_reset_run=0 +b_reset_log=0 +b_keep_index=0 +b_noclean_files=0 + +# launch script +run $* diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/questa/clk_wiz_0.udo b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/questa/clk_wiz_0.udo new file mode 100644 index 0000000..e69de29 diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/questa/compile.do b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/questa/compile.do new file mode 100644 index 0000000..2e71be8 --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/questa/compile.do @@ -0,0 +1,22 @@ +vlib questa_lib/work +vlib questa_lib/msim + +vlib questa_lib/msim/xpm +vlib questa_lib/msim/xil_defaultlib + +vmap xpm questa_lib/msim/xpm +vmap xil_defaultlib questa_lib/msim/xil_defaultlib + +vlog -work xpm -64 -incr -mfcu -sv "+incdir+../../../ipstatic" \ +"/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/ip/xpm/xpm_cdc/hdl/xpm_cdc.sv" \ + +vcom -work xpm -64 -93 \ +"/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/ip/xpm/xpm_VCOMP.vhd" \ + +vlog -work xil_defaultlib -64 -incr -mfcu "+incdir+../../../ipstatic" \ +"../../../../../src/ip/clk_wiz_0/clk_wiz_0_clk_wiz.v" \ +"../../../../../src/ip/clk_wiz_0/clk_wiz_0.v" \ + +vlog -work xil_defaultlib \ +"glbl.v" + diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/questa/elaborate.do b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/questa/elaborate.do new file mode 100644 index 0000000..327f0a7 --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/questa/elaborate.do @@ -0,0 +1 @@ +vopt -64 -l elaborate.log +acc=npr -suppress 10016 -L xil_defaultlib -L xpm -L unisims_ver -L unimacro_ver -L secureip -work xil_defaultlib xil_defaultlib.clk_wiz_0 xil_defaultlib.glbl -o clk_wiz_0_opt diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/questa/file_info.txt b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/questa/file_info.txt new file mode 100644 index 0000000..b33b916 --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/questa/file_info.txt @@ -0,0 +1,5 @@ +xpm_cdc.sv,systemverilog,xpm,../../../../../../usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/ip/xpm/xpm_cdc/hdl/xpm_cdc.sv,incdir="../../../ipstatic"incdir="../../../ipstatic" +xpm_VCOMP.vhd,vhdl,xpm,../../../../../../usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/ip/xpm/xpm_VCOMP.vhd,incdir="../../../ipstatic"incdir="../../../ipstatic" +clk_wiz_0_clk_wiz.v,verilog,xil_defaultlib,../../../../../src/ip/clk_wiz_0/clk_wiz_0_clk_wiz.v,incdir="../../../ipstatic"incdir="../../../ipstatic" +clk_wiz_0.v,verilog,xil_defaultlib,../../../../../src/ip/clk_wiz_0/clk_wiz_0.v,incdir="../../../ipstatic"incdir="../../../ipstatic" +glbl.v,Verilog,xil_defaultlib,glbl.v diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/questa/glbl.v b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/questa/glbl.v new file mode 100755 index 0000000..ed3b249 --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/questa/glbl.v @@ -0,0 +1,84 @@ +// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $ +`ifndef GLBL +`define GLBL +`timescale 1 ps / 1 ps + +module glbl (); + + parameter ROC_WIDTH = 100000; + parameter TOC_WIDTH = 0; + parameter GRES_WIDTH = 10000; + parameter GRES_START = 10000; + +//-------- STARTUP Globals -------------- + wire GSR; + wire GTS; + wire GWE; + wire PRLD; + wire GRESTORE; + tri1 p_up_tmp; + tri (weak1, strong0) PLL_LOCKG = p_up_tmp; + + wire PROGB_GLBL; + wire CCLKO_GLBL; + wire FCSBO_GLBL; + wire [3:0] DO_GLBL; + wire [3:0] DI_GLBL; + + reg GSR_int; + reg GTS_int; + reg PRLD_int; + reg GRESTORE_int; + +//-------- JTAG Globals -------------- + wire JTAG_TDO_GLBL; + wire JTAG_TCK_GLBL; + wire JTAG_TDI_GLBL; + wire JTAG_TMS_GLBL; + wire JTAG_TRST_GLBL; + + reg JTAG_CAPTURE_GLBL; + reg JTAG_RESET_GLBL; + reg JTAG_SHIFT_GLBL; + reg JTAG_UPDATE_GLBL; + reg JTAG_RUNTEST_GLBL; + + reg JTAG_SEL1_GLBL = 0; + reg JTAG_SEL2_GLBL = 0 ; + reg JTAG_SEL3_GLBL = 0; + reg JTAG_SEL4_GLBL = 0; + + reg JTAG_USER_TDO1_GLBL = 1'bz; + reg JTAG_USER_TDO2_GLBL = 1'bz; + reg JTAG_USER_TDO3_GLBL = 1'bz; + reg JTAG_USER_TDO4_GLBL = 1'bz; + + assign (strong1, weak0) GSR = GSR_int; + assign (strong1, weak0) GTS = GTS_int; + assign (weak1, weak0) PRLD = PRLD_int; + assign (strong1, weak0) GRESTORE = GRESTORE_int; + + initial begin + GSR_int = 1'b1; + PRLD_int = 1'b1; + #(ROC_WIDTH) + GSR_int = 1'b0; + PRLD_int = 1'b0; + end + + initial begin + GTS_int = 1'b1; + #(TOC_WIDTH) + GTS_int = 1'b0; + end + + initial begin + GRESTORE_int = 1'b0; + #(GRES_START); + GRESTORE_int = 1'b1; + #(GRES_WIDTH); + GRESTORE_int = 1'b0; + end + +endmodule +`endif diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/questa/simulate.do b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/questa/simulate.do new file mode 100644 index 0000000..81ab20f --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/questa/simulate.do @@ -0,0 +1,19 @@ +onbreak {quit -f} +onerror {quit -f} + +vsim -lib xil_defaultlib clk_wiz_0_opt + +set NumericStdNoWarnings 1 +set StdArithNoWarnings 1 + +do {wave.do} + +view wave +view structure +view signals + +do {clk_wiz_0.udo} + +run 1000ns + +quit -force diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/questa/wave.do b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/questa/wave.do new file mode 100644 index 0000000..70157b0 --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/questa/wave.do @@ -0,0 +1,2 @@ +add wave * +add wave /glbl/GSR diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/riviera/README.txt b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/riviera/README.txt new file mode 100644 index 0000000..e749064 --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/riviera/README.txt @@ -0,0 +1,50 @@ +################################################################################ +# Vivado (TM) v2024.1 (64-bit) +# +# README.txt: Please read the sections below to understand the steps required to +# run the exported script and how to fetch design source file details +# from the file_info.txt file. +# +# Generated by export_simulation on Wed Feb 26 11:53:03 CET 2025 +# +################################################################################ + +1. Steps to run the generated simulation script + +From the shell prompt in the current directory, issue the following command:- + +./clk_wiz_0.sh + +This command will launch the 'compile', 'elaborate' and 'simulate' functions +implemented in the script file for the 3-step flow. These functions are called +from the main 'run' function in the script file. + +The 'run' function first calls the 'check_args' function, the purpose of which +is to verify the generated script arguments and print error if incorrect switch +is specified. The 'run' function then calls the 'setup' function, the purpose of +which is to specify custom or initialization commands. The function also executes +following sub-functions:- +'reset_run' if -reset_run switch is specified. +'reset_log' if -reset_log switch is specified. + +The purpose of 'reset_run' function' is to delete the simulator generated design +data from the previous run and the purpose of 'reset_log' function' is to delete +the simulator generated log files. + +The 'run' function then calls the 'init_lib' function, the purpose of which is to +create design library mappings and directories. This function is called before the +'compile' step. By default, if '-step' switch is specified with the script then the +script will execute that specfic step, else it will execute all steps applicable +for the target simulator. + +For more information on the script, please type './clk_wiz_0.sh -help' + +2. Design source file information + +export_simulation generates a 'file_info.txt' file that contains design file information +based on the compile order when export_simulation was executed from Vivado. The file +contains information about the file name, type, library it is compiled into, whether +it is part of the IP, associated library, file path information in a comma separated +format. This file can be parsed to extract the required information for generating a +custom script or can be read from verification test infra. + diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/riviera/clk_wiz_0.sh b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/riviera/clk_wiz_0.sh new file mode 100755 index 0000000..843cf62 --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/riviera/clk_wiz_0.sh @@ -0,0 +1,264 @@ +#!/usr/bin/env bash +#********************************************************************************************************** +# Vivado (TM) v2024.1 (64-bit) +# +# Script generated by Vivado on Wed Feb 26 11:53:03 CET 2025 +# SW Build 5076996 on Wed May 22 18:36:09 MDT 2024 +# +# Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. +# Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. +# +# Filename : clk_wiz_0.sh +# Simulator : Aldec Riviera-PRO Simulator +# Description : Simulation script generated by export_simulation Tcl command +# Purpose : Run 'compile', 'elaborate', 'simulate' steps for compiling, elaborating and simulating the +# design. The script will copy the library mapping file from the compiled library directory, +# create design library directories and library mappings in the mapping file. +# +# Usage : clk_wiz_0.sh +# clk_wiz_0.sh [-lib_map_path] [-step] [-keep_index] [-noclean_files]* +# clk_wiz_0.sh [-reset_run] +# clk_wiz_0.sh [-reset_log] +# clk_wiz_0.sh [-help] +# +# * The -noclean_files switch is deprecated and will not peform any function (by default, the +# simulator generated files will not be removed unless -reset_run switch is used) +# +# Prerequisite : Before running export_simulation, you must first compile the AMD simulation library +# using the 'compile_simlib' Tcl command (for more information, run 'compile_simlib -help' +# command in the Vivado Tcl shell). After compiling the library, specify the -lib_map_path +# switch with the directory path where the library is created while generating the script +# with export_simulation. +# +# Alternatively, you can set the library path by setting the following project property:- +# +# set_property compxlib.<simulator>_compiled_library_dir <path> [current_project] +# +# You can also point to the simulation library by either setting the 'lib_map_path' global +# variable in this script or specify it with the '-lib_map_path' switch while executing this +# script (type 'clk_wiz_0.sh -help' for more information). +# +# Note: For pure RTL based designs, the -lib_map_path switch can be specified later with the +# generated script, but if design is targetted for system simulation containing SystemC/C++/C +# sources, then the library path MUST be specified upfront when calling export_simulation. +# +# For more information, refer 'Vivado Design Suite User Guide:Logic simulation (UG900)' +# +#********************************************************************************************************** + +# catch pipeline exit status +set -Eeuo pipefail + +# script info +echo -e "clk_wiz_0.sh - Script generated by export_simulation (Vivado v2024.1 (64-bit)-id)\n" + +# main steps +run() +{ + check_args $* + setup + if [[ ($b_step == 1) ]]; then + case $step in + "compile" ) + init_lib + compile + ;; + "simulate" ) + simulate + ;; + * ) + echo -e "ERROR: Invalid or missing step '$step' (type \"./clk_wiz_0.sh -help\" for more information)\n" + exit 1 + esac + else + init_lib + compile + simulate + fi +} + +# RUN_STEP: <compile> +compile() +{ + runvsimsa -do "do {compile.do}" 2>&1 | tee -a compile.log +} + +# RUN_STEP: <simulate> +simulate() +{ + runvsimsa -l simulate.log -do "do {simulate.do}" +} + +# STEP: setup +setup() +{ + # delete previous files for a clean rerun + if [[ ($b_reset_run == 1) ]]; then + reset_run + echo -e "INFO: Simulation run files deleted.\n" + exit 0 + fi + + # delete previous log files + if [[ ($b_reset_log == 1) ]]; then + reset_log + echo -e "INFO: Simulation run log files deleted.\n" + exit 0 + fi + + # add any setup/initialization commands here:- + + # <user specific commands> + +} + +# simulator index file/library directory processing +init_lib() +{ + if [[ ($b_keep_index == 1) ]]; then + # keep previous design library mappings + true + else + # map simulator index file + map_setup_file + fi +} + +# map library.cfg file +map_setup_file() +{ + file="library.cfg" + if [[ ($lib_map_path != "") && !(-e $lib_map_path) ]]; then + echo -e "ERROR: Compiled simulation library directory path not specified or does not exist (type "./top.sh -help" for more information)\n" + fi + if [[ ($lib_map_path != "") ]]; then + src_file="$lib_map_path/$file" + if [[ -e $src_file ]]; then + vmap -link $lib_map_path + fi + fi +} + +# delete generated data from the previous run +reset_run() +{ + files_to_remove=(compile.log elaboration.log simulate.log dataset.asdb work riviera) + for (( i=0; i<${#files_to_remove[*]}; i++ )); do + file="${files_to_remove[i]}" + if [[ -e $file ]]; then + rm -rf $file + fi + done +} + +# delete generated log files from the previous run +reset_log() +{ + files_to_remove=(compile.log elaboration.log simulate.log dataset.asdb) + for (( i=0; i<${#files_to_remove[*]}; i++ )); do + file="${files_to_remove[i]}" + if [[ -e $file ]]; then + rm -rf $file + fi + done +} + +# check switch argument value +check_arg_value() +{ + if [[ ($1 == "-step") && (($2 != "compile") && ($2 != "simulate")) ]];then + echo -e "ERROR: Invalid or missing step '$2' (type \"./top.sh -help\" for more information)\n" + exit 1 + fi + + if [[ ($1 == "-lib_map_path") && ($2 == "") ]];then + echo -e "ERROR: Simulation library directory path not specified (type \"./clk_wiz_0.sh -help\" for more information)\n" + exit 1 + fi +} + +# check command line arguments +check_args() +{ + arg_count=$# + if [[ ("$#" == 1) && (("$1" == "-help") || ("$1" == "-h")) ]]; then + usage + fi + while [[ "$#" -gt 0 ]]; do + case $1 in + -step) check_arg_value $1 $2;step=$2; b_step=1; shift;; + -lib_map_path) check_arg_value $1 $2;lib_map_path=$2; b_lib_map_path=1; shift;; + -gen_bypass) b_gen_bypass=1 ;; + -reset_run) b_reset_run=1 ;; + -reset_log) b_reset_log=1 ;; + -keep_index) b_keep_index=1 ;; + -noclean_files) b_noclean_files=1 ;; + -help|-h) ;; + *) echo -e "ERROR: Invalid option specified '$1' (type "./top.sh -help" for more information)\n"; exit 1 ;; + esac + shift + done + + # -reset_run is not applicable with other switches + if [[ ("$arg_count" -gt 1) && ($b_reset_run == 1) ]]; then + echo -e "ERROR: -reset_run switch is not applicable with other switches (type \"./top.sh -help\" for more information)\n" + exit 1 + fi + + # -reset_log is not applicable with other switches + if [[ ("$arg_count" -gt 1) && ($b_reset_log == 1) ]]; then + echo -e "ERROR: -reset_log switch is not applicable with other switches (type \"./top.sh -help\" for more information)\n" + exit 1 + fi + + # -keep_index is not applicable with other switches + if [[ ("$arg_count" -gt 1) && ($b_keep_index == 1) ]]; then + echo -e "ERROR: -keep_index switch is not applicable with other switches (type \"./top.sh -help\" for more information)\n" + exit 1 + fi + + # -noclean_files is not applicable with other switches + if [[ ("$arg_count" -gt 1) && ($b_noclean_files == 1) ]]; then + echo -e "ERROR: -noclean_files switch is not applicable with other switches (type \"./top.sh -help\" for more information)\n" + exit 1 + fi +} + +# script usage +usage() +{ + msg="Usage: clk_wiz_0.sh [-help]\n\ +Usage: clk_wiz_0.sh [-step]\n\ +Usage: clk_wiz_0.sh [-lib_map_path]\n\ +Usage: clk_wiz_0.sh [-reset_run]\n\ +Usage: clk_wiz_0.sh [-reset_log]\n\ +Usage: clk_wiz_0.sh [-keep_index]\n\ +Usage: clk_wiz_0.sh [-noclean_files]\n\n\ +[-help] -- Print help information for this script\n\n\ +[-step <name>] -- Execute specified step (compile, simulate)\n\n\ +[-lib_map_path <path>] -- Compiled simulation library directory path. The simulation library is compiled\n\ +using the compile_simlib tcl command. Please see 'compile_simlib -help' for more information.\n\n\ +[-reset_run] -- Delete simulator generated data files from the previous run and recreate simulator setup\n\ +file/library mappings for a clean run. This switch will not execute steps defined in the script.\n\n\ +NOTE: To keep simulator index file settings from the previous run, use the -keep_index switch\n\ +NOTE: To regenerate simulator index file but keep the simulator generated files, use the -noclean_files switch\n\n\ +[-reset_log] -- Delete simulator generated log files from the previous run\n\n\ +[-keep_index] -- Keep simulator index file settings from the previous run\n\n\ +[-noclean_files] -- Reset previous run, but do not remove simulator generated files from the previous run\n" + echo -e $msg + exit 0 +} + +# initialize globals +step="" +lib_map_path="" +b_step=0 +b_lib_map_path=0 +b_gen_bypass=0 +b_reset_run=0 +b_reset_log=0 +b_keep_index=0 +b_noclean_files=0 + +# launch script +run $* diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/riviera/clk_wiz_0.udo b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/riviera/clk_wiz_0.udo new file mode 100644 index 0000000..e69de29 diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/riviera/compile.do b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/riviera/compile.do new file mode 100644 index 0000000..28c4c2b --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/riviera/compile.do @@ -0,0 +1,25 @@ +transcript off +onbreak {quit -force} +onerror {quit -force} +transcript on + +vlib work +vlib riviera/xpm +vlib riviera/xil_defaultlib + +vmap xpm riviera/xpm +vmap xil_defaultlib riviera/xil_defaultlib + +vlog -work xpm -incr "+incdir+../../../ipstatic" -l xpm -l xil_defaultlib \ +"/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/ip/xpm/xpm_cdc/hdl/xpm_cdc.sv" \ + +vcom -work xpm -93 -incr \ +"/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/ip/xpm/xpm_VCOMP.vhd" \ + +vlog -work xil_defaultlib -incr -v2k5 "+incdir+../../../ipstatic" -l xpm -l xil_defaultlib \ +"../../../../../src/ip/clk_wiz_0/clk_wiz_0_clk_wiz.v" \ +"../../../../../src/ip/clk_wiz_0/clk_wiz_0.v" \ + +vlog -work xil_defaultlib \ +"glbl.v" + diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/riviera/file_info.txt b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/riviera/file_info.txt new file mode 100644 index 0000000..b33b916 --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/riviera/file_info.txt @@ -0,0 +1,5 @@ +xpm_cdc.sv,systemverilog,xpm,../../../../../../usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/ip/xpm/xpm_cdc/hdl/xpm_cdc.sv,incdir="../../../ipstatic"incdir="../../../ipstatic" +xpm_VCOMP.vhd,vhdl,xpm,../../../../../../usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/ip/xpm/xpm_VCOMP.vhd,incdir="../../../ipstatic"incdir="../../../ipstatic" +clk_wiz_0_clk_wiz.v,verilog,xil_defaultlib,../../../../../src/ip/clk_wiz_0/clk_wiz_0_clk_wiz.v,incdir="../../../ipstatic"incdir="../../../ipstatic" +clk_wiz_0.v,verilog,xil_defaultlib,../../../../../src/ip/clk_wiz_0/clk_wiz_0.v,incdir="../../../ipstatic"incdir="../../../ipstatic" +glbl.v,Verilog,xil_defaultlib,glbl.v diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/riviera/glbl.v b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/riviera/glbl.v new file mode 100755 index 0000000..ed3b249 --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/riviera/glbl.v @@ -0,0 +1,84 @@ +// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $ +`ifndef GLBL +`define GLBL +`timescale 1 ps / 1 ps + +module glbl (); + + parameter ROC_WIDTH = 100000; + parameter TOC_WIDTH = 0; + parameter GRES_WIDTH = 10000; + parameter GRES_START = 10000; + +//-------- STARTUP Globals -------------- + wire GSR; + wire GTS; + wire GWE; + wire PRLD; + wire GRESTORE; + tri1 p_up_tmp; + tri (weak1, strong0) PLL_LOCKG = p_up_tmp; + + wire PROGB_GLBL; + wire CCLKO_GLBL; + wire FCSBO_GLBL; + wire [3:0] DO_GLBL; + wire [3:0] DI_GLBL; + + reg GSR_int; + reg GTS_int; + reg PRLD_int; + reg GRESTORE_int; + +//-------- JTAG Globals -------------- + wire JTAG_TDO_GLBL; + wire JTAG_TCK_GLBL; + wire JTAG_TDI_GLBL; + wire JTAG_TMS_GLBL; + wire JTAG_TRST_GLBL; + + reg JTAG_CAPTURE_GLBL; + reg JTAG_RESET_GLBL; + reg JTAG_SHIFT_GLBL; + reg JTAG_UPDATE_GLBL; + reg JTAG_RUNTEST_GLBL; + + reg JTAG_SEL1_GLBL = 0; + reg JTAG_SEL2_GLBL = 0 ; + reg JTAG_SEL3_GLBL = 0; + reg JTAG_SEL4_GLBL = 0; + + reg JTAG_USER_TDO1_GLBL = 1'bz; + reg JTAG_USER_TDO2_GLBL = 1'bz; + reg JTAG_USER_TDO3_GLBL = 1'bz; + reg JTAG_USER_TDO4_GLBL = 1'bz; + + assign (strong1, weak0) GSR = GSR_int; + assign (strong1, weak0) GTS = GTS_int; + assign (weak1, weak0) PRLD = PRLD_int; + assign (strong1, weak0) GRESTORE = GRESTORE_int; + + initial begin + GSR_int = 1'b1; + PRLD_int = 1'b1; + #(ROC_WIDTH) + GSR_int = 1'b0; + PRLD_int = 1'b0; + end + + initial begin + GTS_int = 1'b1; + #(TOC_WIDTH) + GTS_int = 1'b0; + end + + initial begin + GRESTORE_int = 1'b0; + #(GRES_START); + GRESTORE_int = 1'b1; + #(GRES_WIDTH); + GRESTORE_int = 1'b0; + end + +endmodule +`endif diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/riviera/simulate.do b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/riviera/simulate.do new file mode 100644 index 0000000..972cc59 --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/riviera/simulate.do @@ -0,0 +1,14 @@ +transcript off +onbreak {quit -force} +onerror {quit -force} +transcript on + +asim +access +r +m+clk_wiz_0 -L xpm -L xil_defaultlib -L unisims_ver -L unimacro_ver -L secureip -O5 xil_defaultlib.clk_wiz_0 xil_defaultlib.glbl + +do {clk_wiz_0.udo} + +run 1000ns + +endsim + +quit -force diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/vcs/README.txt b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/vcs/README.txt new file mode 100644 index 0000000..e749064 --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/vcs/README.txt @@ -0,0 +1,50 @@ +################################################################################ +# Vivado (TM) v2024.1 (64-bit) +# +# README.txt: Please read the sections below to understand the steps required to +# run the exported script and how to fetch design source file details +# from the file_info.txt file. +# +# Generated by export_simulation on Wed Feb 26 11:53:03 CET 2025 +# +################################################################################ + +1. Steps to run the generated simulation script + +From the shell prompt in the current directory, issue the following command:- + +./clk_wiz_0.sh + +This command will launch the 'compile', 'elaborate' and 'simulate' functions +implemented in the script file for the 3-step flow. These functions are called +from the main 'run' function in the script file. + +The 'run' function first calls the 'check_args' function, the purpose of which +is to verify the generated script arguments and print error if incorrect switch +is specified. The 'run' function then calls the 'setup' function, the purpose of +which is to specify custom or initialization commands. The function also executes +following sub-functions:- +'reset_run' if -reset_run switch is specified. +'reset_log' if -reset_log switch is specified. + +The purpose of 'reset_run' function' is to delete the simulator generated design +data from the previous run and the purpose of 'reset_log' function' is to delete +the simulator generated log files. + +The 'run' function then calls the 'init_lib' function, the purpose of which is to +create design library mappings and directories. This function is called before the +'compile' step. By default, if '-step' switch is specified with the script then the +script will execute that specfic step, else it will execute all steps applicable +for the target simulator. + +For more information on the script, please type './clk_wiz_0.sh -help' + +2. Design source file information + +export_simulation generates a 'file_info.txt' file that contains design file information +based on the compile order when export_simulation was executed from Vivado. The file +contains information about the file name, type, library it is compiled into, whether +it is part of the IP, associated library, file path information in a comma separated +format. This file can be parsed to extract the required information for generating a +custom script or can be read from verification test infra. + diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/vcs/clk_wiz_0.sh b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/vcs/clk_wiz_0.sh new file mode 100755 index 0000000..35bbf8c --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/vcs/clk_wiz_0.sh @@ -0,0 +1,345 @@ +#!/usr/bin/env bash +#********************************************************************************************************** +# Vivado (TM) v2024.1 (64-bit) +# +# Script generated by Vivado on Wed Feb 26 11:53:03 CET 2025 +# SW Build 5076996 on Wed May 22 18:36:09 MDT 2024 +# +# Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. +# Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. +# +# Filename : clk_wiz_0.sh +# Simulator : Synopsys Verilog Compiler Simulator +# Description : Simulation script generated by export_simulation Tcl command +# Purpose : Run 'compile', 'elaborate', 'simulate' steps for compiling, elaborating and simulating the +# design. The script will copy the library mapping file from the compiled library directory, +# create design library directories and library mappings in the mapping file. +# +# Usage : clk_wiz_0.sh +# clk_wiz_0.sh [-lib_map_path] [-step] [-keep_index] [-noclean_files]* +# clk_wiz_0.sh [-reset_run] +# clk_wiz_0.sh [-reset_log] +# clk_wiz_0.sh [-help] +# +# * The -noclean_files switch is deprecated and will not peform any function (by default, the +# simulator generated files will not be removed unless -reset_run switch is used) +# +# Prerequisite : Before running export_simulation, you must first compile the AMD simulation library +# using the 'compile_simlib' Tcl command (for more information, run 'compile_simlib -help' +# command in the Vivado Tcl shell). After compiling the library, specify the -lib_map_path +# switch with the directory path where the library is created while generating the script +# with export_simulation. +# +# Alternatively, you can set the library path by setting the following project property:- +# +# set_property compxlib.<simulator>_compiled_library_dir <path> [current_project] +# +# You can also point to the simulation library by either setting the 'lib_map_path' global +# variable in this script or specify it with the '-lib_map_path' switch while executing this +# script (type 'clk_wiz_0.sh -help' for more information). +# +# Note: For pure RTL based designs, the -lib_map_path switch can be specified later with the +# generated script, but if design is targetted for system simulation containing SystemC/C++/C +# sources, then the library path MUST be specified upfront when calling export_simulation. +# +# For more information, refer 'Vivado Design Suite User Guide:Logic simulation (UG900)' +# +#********************************************************************************************************** + +# catch pipeline exit status +set -Eeuo pipefail + +# set vhdlan compile options +vhdlan_opts="-full64 -l .tmp_log" + +# set vlogan compile options +vlogan_opts="-full64 -l .tmp_log" + +# set vcs elaboration options +vcs_elab_opts="-full64 -debug_acc+pp+dmptf -t ps -licqueue -l elaborate.log" + +# set vcs simulation options +vcs_sim_opts="-ucli -licqueue -l simulate.log " + +# set design libraries +design_libs=(xpm xil_defaultlib) + +# simulation root library directory +sim_lib_dir="vcs_lib" + +# script info +echo -e "clk_wiz_0.sh - Script generated by export_simulation (Vivado v2024.1 (64-bit)-id)\n" + +# main steps +run() +{ + check_args $* + setup + if [[ ($b_step == 1) ]]; then + case $step in + "compile" ) + init_lib + compile + ;; + "elaborate" ) + elaborate + ;; + "simulate" ) + simulate + ;; + * ) + echo -e "ERROR: Invalid or missing step '$step' (type \"./clk_wiz_0.sh -help\" for more information)\n" + exit 1 + esac + else + init_lib + compile + elaborate + simulate + fi +} + +# RUN_STEP: <compile> +compile() +{ + vlogan -work xpm $vlogan_opts -sverilog +incdir+"../../../ipstatic" \ + "/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/ip/xpm/xpm_cdc/hdl/xpm_cdc.sv" \ + 2>&1 | tee compile.log; cat .tmp_log > vlogan.log 2>/dev/null + + vhdlan -work xpm $vhdlan_opts \ + "/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/ip/xpm/xpm_VCOMP.vhd" \ + 2>&1 | tee -a compile.log; cat .tmp_log > vhdlan.log 2>/dev/null + + vlogan -work xil_defaultlib $vlogan_opts +v2k +incdir+"../../../ipstatic" \ + "../../../../../src/ip/clk_wiz_0/clk_wiz_0_clk_wiz.v" \ + "../../../../../src/ip/clk_wiz_0/clk_wiz_0.v" \ + 2>&1 | tee -a compile.log; cat .tmp_log >> vlogan.log 2>/dev/null + + vlogan -work xil_defaultlib $vlogan_opts +v2k \ + glbl.v \ + 2>&1 | tee -a compile.log; cat .tmp_log >> vlogan.log 2>/dev/null +} + +# RUN_STEP: <elaborate> +elaborate() +{ + vcs $vcs_elab_opts xil_defaultlib.clk_wiz_0 xil_defaultlib.glbl -o clk_wiz_0_simv +} + +# RUN_STEP: <simulate> +simulate() +{ + ./clk_wiz_0_simv $vcs_sim_opts -do simulate.do +} + +# STEP: setup +setup() +{ + # delete previous files for a clean rerun + if [[ ($b_reset_run == 1) ]]; then + reset_run + echo -e "INFO: Simulation run files deleted.\n" + exit 0 + fi + + # delete previous log files + if [[ ($b_reset_log == 1) ]]; then + reset_log + echo -e "INFO: Simulation run log files deleted.\n" + exit 0 + fi + + # add any setup/initialization commands here:- + + # <user specific commands> + +} + +# simulator index file/library directory processing +init_lib() +{ + if [[ ($b_keep_index == 1) ]]; then + # keep previous design library mappings + true + else + # define design library mappings + create_lib_mappings + fi + + if [[ ($b_keep_index == 1) ]]; then + # do not recreate design library directories + true + else + # create design library directories + create_lib_dir + fi +} + +# define design library mappings +create_lib_mappings() +{ + file="synopsys_sim.setup" + if [[ -e $file ]]; then + if [[ ($lib_map_path == "") ]]; then + return + else + rm -rf $file + fi + fi + + touch $file + + if [[ ($lib_map_path != "") && !(-e $lib_map_path) ]]; then + echo -e "ERROR: Compiled simulation library directory path not specified or does not exist (type "./top.sh -help" for more information)\n" + fi + + for (( i=0; i<${#design_libs[*]}; i++ )); do + lib="${design_libs[i]}" + mapping="$lib:$sim_lib_dir/$lib" + echo $mapping >> $file + done + + if [[ ($lib_map_path != "") ]]; then + incl_ref="OTHERS=$lib_map_path/synopsys_sim.setup" + echo $incl_ref >> $file + fi +} + +# create design library directory +create_lib_dir() +{ + if [[ -e $sim_lib_dir ]]; then + rm -rf $sim_lib_dir + fi + for (( i=0; i<${#design_libs[*]}; i++ )); do + lib="${design_libs[i]}" + lib_dir="$sim_lib_dir/$lib" + if [[ ! -e $lib_dir ]]; then + mkdir -p $lib_dir + fi + done +} + +# delete generated data from the previous run +reset_run() +{ + files_to_remove=(ucli.key clk_wiz_0_simv vlogan.log vhdlan.log compile.log elaborate.log simulate.log .tmp_log .vlogansetup.env .vlogansetup.args .vcs_lib_lock scirocco_command.log lib_sc.so 64 AN.DB csrc clk_wiz_0_simv.daidir vcs_lib c.obj) + for (( i=0; i<${#files_to_remove[*]}; i++ )); do + file="${files_to_remove[i]}" + if [[ -e $file ]]; then + rm -rf $file + fi + done +} + +# delete generated log files from the previous run +reset_log() +{ + files_to_remove=(vlogan.log vhdlan.log compile.log elaborate.log simulate.log .tmp_log) + for (( i=0; i<${#files_to_remove[*]}; i++ )); do + file="${files_to_remove[i]}" + if [[ -e $file ]]; then + rm -rf $file + fi + done +} + +# check switch argument value +check_arg_value() +{ + if [[ ($1 == "-step") && (($2 != "compile") && ($2 != "elaborate") && ($2 != "simulate")) ]];then + echo -e "ERROR: Invalid or missing step '$2' (type \"./top.sh -help\" for more information)\n" + exit 1 + fi + + if [[ ($1 == "-lib_map_path") && ($2 == "") ]];then + echo -e "ERROR: Simulation library directory path not specified (type \"./clk_wiz_0.sh -help\" for more information)\n" + exit 1 + fi +} + +# check command line arguments +check_args() +{ + arg_count=$# + if [[ ("$#" == 1) && (("$1" == "-help") || ("$1" == "-h")) ]]; then + usage + fi + while [[ "$#" -gt 0 ]]; do + case $1 in + -step) check_arg_value $1 $2;step=$2; b_step=1; shift;; + -lib_map_path) check_arg_value $1 $2;lib_map_path=$2; b_lib_map_path=1; shift;; + -gen_bypass) b_gen_bypass=1 ;; + -reset_run) b_reset_run=1 ;; + -reset_log) b_reset_log=1 ;; + -keep_index) b_keep_index=1 ;; + -noclean_files) b_noclean_files=1 ;; + -help|-h) ;; + *) echo -e "ERROR: Invalid option specified '$1' (type "./top.sh -help" for more information)\n"; exit 1 ;; + esac + shift + done + + # -reset_run is not applicable with other switches + if [[ ("$arg_count" -gt 1) && ($b_reset_run == 1) ]]; then + echo -e "ERROR: -reset_run switch is not applicable with other switches (type \"./top.sh -help\" for more information)\n" + exit 1 + fi + + # -reset_log is not applicable with other switches + if [[ ("$arg_count" -gt 1) && ($b_reset_log == 1) ]]; then + echo -e "ERROR: -reset_log switch is not applicable with other switches (type \"./top.sh -help\" for more information)\n" + exit 1 + fi + + # -keep_index is not applicable with other switches + if [[ ("$arg_count" -gt 1) && ($b_keep_index == 1) ]]; then + echo -e "ERROR: -keep_index switch is not applicable with other switches (type \"./top.sh -help\" for more information)\n" + exit 1 + fi + + # -noclean_files is not applicable with other switches + if [[ ("$arg_count" -gt 1) && ($b_noclean_files == 1) ]]; then + echo -e "ERROR: -noclean_files switch is not applicable with other switches (type \"./top.sh -help\" for more information)\n" + exit 1 + fi +} + +# script usage +usage() +{ + msg="Usage: clk_wiz_0.sh [-help]\n\ +Usage: clk_wiz_0.sh [-step]\n\ +Usage: clk_wiz_0.sh [-lib_map_path]\n\ +Usage: clk_wiz_0.sh [-reset_run]\n\ +Usage: clk_wiz_0.sh [-reset_log]\n\ +Usage: clk_wiz_0.sh [-keep_index]\n\ +Usage: clk_wiz_0.sh [-noclean_files]\n\n\ +[-help] -- Print help information for this script\n\n\ +[-step <name>] -- Execute specified step (compile, elaborate, simulate)\n\n\ +[-lib_map_path <path>] -- Compiled simulation library directory path. The simulation library is compiled\n\ +using the compile_simlib tcl command. Please see 'compile_simlib -help' for more information.\n\n\ +[-reset_run] -- Delete simulator generated data files from the previous run and recreate simulator setup\n\ +file/library mappings for a clean run. This switch will not execute steps defined in the script.\n\n\ +NOTE: To keep simulator index file settings from the previous run, use the -keep_index switch\n\ +NOTE: To regenerate simulator index file but keep the simulator generated files, use the -noclean_files switch\n\n\ +[-reset_log] -- Delete simulator generated log files from the previous run\n\n\ +[-keep_index] -- Keep simulator index file settings from the previous run\n\n\ +[-noclean_files] -- Reset previous run, but do not remove simulator generated files from the previous run\n" + echo -e $msg + exit 0 +} + +# initialize globals +step="" +lib_map_path="" +b_step=0 +b_lib_map_path=0 +b_gen_bypass=0 +b_reset_run=0 +b_reset_log=0 +b_keep_index=0 +b_noclean_files=0 + +# launch script +run $* diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/vcs/file_info.txt b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/vcs/file_info.txt new file mode 100644 index 0000000..b33b916 --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/vcs/file_info.txt @@ -0,0 +1,5 @@ +xpm_cdc.sv,systemverilog,xpm,../../../../../../usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/ip/xpm/xpm_cdc/hdl/xpm_cdc.sv,incdir="../../../ipstatic"incdir="../../../ipstatic" +xpm_VCOMP.vhd,vhdl,xpm,../../../../../../usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/ip/xpm/xpm_VCOMP.vhd,incdir="../../../ipstatic"incdir="../../../ipstatic" +clk_wiz_0_clk_wiz.v,verilog,xil_defaultlib,../../../../../src/ip/clk_wiz_0/clk_wiz_0_clk_wiz.v,incdir="../../../ipstatic"incdir="../../../ipstatic" +clk_wiz_0.v,verilog,xil_defaultlib,../../../../../src/ip/clk_wiz_0/clk_wiz_0.v,incdir="../../../ipstatic"incdir="../../../ipstatic" +glbl.v,Verilog,xil_defaultlib,glbl.v diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/vcs/glbl.v b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/vcs/glbl.v new file mode 100755 index 0000000..ed3b249 --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/vcs/glbl.v @@ -0,0 +1,84 @@ +// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $ +`ifndef GLBL +`define GLBL +`timescale 1 ps / 1 ps + +module glbl (); + + parameter ROC_WIDTH = 100000; + parameter TOC_WIDTH = 0; + parameter GRES_WIDTH = 10000; + parameter GRES_START = 10000; + +//-------- STARTUP Globals -------------- + wire GSR; + wire GTS; + wire GWE; + wire PRLD; + wire GRESTORE; + tri1 p_up_tmp; + tri (weak1, strong0) PLL_LOCKG = p_up_tmp; + + wire PROGB_GLBL; + wire CCLKO_GLBL; + wire FCSBO_GLBL; + wire [3:0] DO_GLBL; + wire [3:0] DI_GLBL; + + reg GSR_int; + reg GTS_int; + reg PRLD_int; + reg GRESTORE_int; + +//-------- JTAG Globals -------------- + wire JTAG_TDO_GLBL; + wire JTAG_TCK_GLBL; + wire JTAG_TDI_GLBL; + wire JTAG_TMS_GLBL; + wire JTAG_TRST_GLBL; + + reg JTAG_CAPTURE_GLBL; + reg JTAG_RESET_GLBL; + reg JTAG_SHIFT_GLBL; + reg JTAG_UPDATE_GLBL; + reg JTAG_RUNTEST_GLBL; + + reg JTAG_SEL1_GLBL = 0; + reg JTAG_SEL2_GLBL = 0 ; + reg JTAG_SEL3_GLBL = 0; + reg JTAG_SEL4_GLBL = 0; + + reg JTAG_USER_TDO1_GLBL = 1'bz; + reg JTAG_USER_TDO2_GLBL = 1'bz; + reg JTAG_USER_TDO3_GLBL = 1'bz; + reg JTAG_USER_TDO4_GLBL = 1'bz; + + assign (strong1, weak0) GSR = GSR_int; + assign (strong1, weak0) GTS = GTS_int; + assign (weak1, weak0) PRLD = PRLD_int; + assign (strong1, weak0) GRESTORE = GRESTORE_int; + + initial begin + GSR_int = 1'b1; + PRLD_int = 1'b1; + #(ROC_WIDTH) + GSR_int = 1'b0; + PRLD_int = 1'b0; + end + + initial begin + GTS_int = 1'b1; + #(TOC_WIDTH) + GTS_int = 1'b0; + end + + initial begin + GRESTORE_int = 1'b0; + #(GRES_START); + GRESTORE_int = 1'b1; + #(GRES_WIDTH); + GRESTORE_int = 1'b0; + end + +endmodule +`endif diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/vcs/simulate.do b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/vcs/simulate.do new file mode 100644 index 0000000..b77c6f1 --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/vcs/simulate.do @@ -0,0 +1,2 @@ +run 1000ns +quit diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xcelium/README.txt b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xcelium/README.txt new file mode 100644 index 0000000..e749064 --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xcelium/README.txt @@ -0,0 +1,50 @@ +################################################################################ +# Vivado (TM) v2024.1 (64-bit) +# +# README.txt: Please read the sections below to understand the steps required to +# run the exported script and how to fetch design source file details +# from the file_info.txt file. +# +# Generated by export_simulation on Wed Feb 26 11:53:03 CET 2025 +# +################################################################################ + +1. Steps to run the generated simulation script + +From the shell prompt in the current directory, issue the following command:- + +./clk_wiz_0.sh + +This command will launch the 'compile', 'elaborate' and 'simulate' functions +implemented in the script file for the 3-step flow. These functions are called +from the main 'run' function in the script file. + +The 'run' function first calls the 'check_args' function, the purpose of which +is to verify the generated script arguments and print error if incorrect switch +is specified. The 'run' function then calls the 'setup' function, the purpose of +which is to specify custom or initialization commands. The function also executes +following sub-functions:- +'reset_run' if -reset_run switch is specified. +'reset_log' if -reset_log switch is specified. + +The purpose of 'reset_run' function' is to delete the simulator generated design +data from the previous run and the purpose of 'reset_log' function' is to delete +the simulator generated log files. + +The 'run' function then calls the 'init_lib' function, the purpose of which is to +create design library mappings and directories. This function is called before the +'compile' step. By default, if '-step' switch is specified with the script then the +script will execute that specfic step, else it will execute all steps applicable +for the target simulator. + +For more information on the script, please type './clk_wiz_0.sh -help' + +2. Design source file information + +export_simulation generates a 'file_info.txt' file that contains design file information +based on the compile order when export_simulation was executed from Vivado. The file +contains information about the file name, type, library it is compiled into, whether +it is part of the IP, associated library, file path information in a comma separated +format. This file can be parsed to extract the required information for generating a +custom script or can be read from verification test infra. + diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xcelium/clk_wiz_0.sh b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xcelium/clk_wiz_0.sh new file mode 100755 index 0000000..ed97de1 --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xcelium/clk_wiz_0.sh @@ -0,0 +1,351 @@ +#!/usr/bin/env bash +#********************************************************************************************************** +# Vivado (TM) v2024.1 (64-bit) +# +# Script generated by Vivado on Wed Feb 26 11:53:03 CET 2025 +# SW Build 5076996 on Wed May 22 18:36:09 MDT 2024 +# +# Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. +# Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. +# +# Filename : clk_wiz_0.sh +# Simulator : Cadence Xcelium Parallel Simulator +# Description : Simulation script generated by export_simulation Tcl command +# Purpose : Run 'compile', 'elaborate', 'simulate' steps for compiling, elaborating and simulating the +# design. The script will copy the library mapping file from the compiled library directory, +# create design library directories and library mappings in the mapping file. +# +# Usage : clk_wiz_0.sh +# clk_wiz_0.sh [-lib_map_path] [-step] [-keep_index] [-noclean_files]* +# clk_wiz_0.sh [-reset_run] +# clk_wiz_0.sh [-reset_log] +# clk_wiz_0.sh [-help] +# +# * The -noclean_files switch is deprecated and will not peform any function (by default, the +# simulator generated files will not be removed unless -reset_run switch is used) +# +# Prerequisite : Before running export_simulation, you must first compile the AMD simulation library +# using the 'compile_simlib' Tcl command (for more information, run 'compile_simlib -help' +# command in the Vivado Tcl shell). After compiling the library, specify the -lib_map_path +# switch with the directory path where the library is created while generating the script +# with export_simulation. +# +# Alternatively, you can set the library path by setting the following project property:- +# +# set_property compxlib.<simulator>_compiled_library_dir <path> [current_project] +# +# You can also point to the simulation library by either setting the 'lib_map_path' global +# variable in this script or specify it with the '-lib_map_path' switch while executing this +# script (type 'clk_wiz_0.sh -help' for more information). +# +# Note: For pure RTL based designs, the -lib_map_path switch can be specified later with the +# generated script, but if design is targetted for system simulation containing SystemC/C++/C +# sources, then the library path MUST be specified upfront when calling export_simulation. +# +# For more information, refer 'Vivado Design Suite User Guide:Logic simulation (UG900)' +# +#********************************************************************************************************** + +# catch pipeline exit status +set -Eeuo pipefail + +# set xmvhdl compile options +xmvhdl_opts="-64bit -messages -relax -logfile .tmp_log -update" + +# set xmvlog compile options +xmvlog_opts="-64bit -messages -logfile .tmp_log -update" + +# set xmelab elaboration options +xmelab_opts="-64bit -relax -access +rwc -namemap_mixgen -messages -logfile elaborate.log" + +# set xmsim simulation options +xmsim_opts="-64bit -logfile simulate.log" + +# set design libraries for elaboration +design_libs_elab="-libname xpm -libname xil_defaultlib -libname unisims_ver -libname unimacro_ver -libname secureip" + +# set design libraries +design_libs=(simprims_ver xpm xil_defaultlib) + +# simulation root library directory +sim_lib_dir="xcelium_lib" + +# script info +echo -e "clk_wiz_0.sh - Script generated by export_simulation (Vivado v2024.1 (64-bit)-id)\n" + +# main steps +run() +{ + check_args $* + setup + if [[ ($b_step == 1) ]]; then + case $step in + "compile" ) + init_lib + compile + ;; + "elaborate" ) + elaborate + ;; + "simulate" ) + simulate + ;; + * ) + echo -e "ERROR: Invalid or missing step '$step' (type \"./clk_wiz_0.sh -help\" for more information)\n" + exit 1 + esac + else + init_lib + compile + elaborate + simulate + fi +} + +# RUN_STEP: <compile> +compile() +{ + xmvlog -work xpm $xmvlog_opts -sv +incdir+"../../../ipstatic" \ + "/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/ip/xpm/xpm_cdc/hdl/xpm_cdc.sv" \ + 2>&1 | tee compile.log; cat .tmp_log > xmvlog.log 2>/dev/null + + xmvhdl -work xpm -V93 $xmvhdl_opts \ + "/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/ip/xpm/xpm_VCOMP.vhd" \ + 2>&1 | tee -a compile.log; cat .tmp_log > xmvhdl.log 2>/dev/null + + xmvlog -work xil_defaultlib $xmvlog_opts +incdir+"../../../ipstatic" \ + "../../../../../src/ip/clk_wiz_0/clk_wiz_0_clk_wiz.v" \ + "../../../../../src/ip/clk_wiz_0/clk_wiz_0.v" \ + 2>&1 | tee -a compile.log; cat .tmp_log >> xmvlog.log 2>/dev/null + + xmvlog -work xil_defaultlib $xmvlog_opts \ + glbl.v \ + 2>&1 | tee -a compile.log; cat .tmp_log >> xmvlog.log 2>/dev/null +} + +# RUN_STEP: <elaborate> +elaborate() +{ + xmelab $xmelab_opts $design_libs_elab xil_defaultlib.clk_wiz_0 xil_defaultlib.glbl +} + +# RUN_STEP: <simulate> +simulate() +{ + xmsim $xmsim_opts xil_defaultlib.clk_wiz_0 -input simulate.do +} + +# STEP: setup +setup() +{ + # delete previous files for a clean rerun + if [[ ($b_reset_run == 1) ]]; then + reset_run + echo -e "INFO: Simulation run files deleted.\n" + exit 0 + fi + + # delete previous log files + if [[ ($b_reset_log == 1) ]]; then + reset_log + echo -e "INFO: Simulation run log files deleted.\n" + exit 0 + fi + + # add any setup/initialization commands here:- + + # <user specific commands> + +} + +# simulator index file/library directory processing +init_lib() +{ + if [[ ($b_keep_index == 1) ]]; then + # keep previous design library mappings + true + else + # define design library mappings + create_lib_mappings + fi + + if [[ ($b_keep_index == 1) ]]; then + # do not recreate design library directories + true + else + # create design library directories + create_lib_dir + fi +} + +# define design library mappings +create_lib_mappings() +{ + file="hdl.var" + touch $file + + file="cds.lib" + if [[ -e $file ]]; then + if [[ ($lib_map_path == "") ]]; then + return + else + rm -rf $file + fi + fi + + touch $file + + if [[ ($lib_map_path != "") && !(-e $lib_map_path) ]]; then + echo -e "ERROR: Compiled simulation library directory path not specified or does not exist (type "./top.sh -help" for more information)\n" + fi + + if [[ ($lib_map_path != "") ]]; then + incl_ref="INCLUDE $lib_map_path/cds.lib" + echo $incl_ref >> $file + fi + + for (( i=0; i<${#design_libs[*]}; i++ )); do + lib="${design_libs[i]}" + mapping="DEFINE $lib $sim_lib_dir/$lib" + echo $mapping >> $file + done +} + +# create design library directory +create_lib_dir() +{ + if [[ -e $sim_lib_dir ]]; then + rm -rf $sim_lib_dir + fi + for (( i=0; i<${#design_libs[*]}; i++ )); do + lib="${design_libs[i]}" + lib_dir="$sim_lib_dir/$lib" + if [[ ! -e $lib_dir ]]; then + mkdir -p $lib_dir + fi + done +} + +# delete generated data from the previous run +reset_run() +{ + files_to_remove=(xmvlog.log xmvhdl.log xmsc.log compile.log elaborate.log simulate.log diag_report.log xsc_report.log clk_wiz_0_sc.so .tmp_log xcelium_lib waves.shm c.obj) + for (( i=0; i<${#files_to_remove[*]}; i++ )); do + file="${files_to_remove[i]}" + if [[ -e $file ]]; then + rm -rf $file + fi + done +} + +# delete generated log files from the previous run +reset_log() +{ + files_to_remove=(xmvlog.log xmvhdl.log xmsc.log compile.log elaborate.log simulate.log diag_report.log xsc_report.log .tmp_log) + for (( i=0; i<${#files_to_remove[*]}; i++ )); do + file="${files_to_remove[i]}" + if [[ -e $file ]]; then + rm -rf $file + fi + done +} + +# check switch argument value +check_arg_value() +{ + if [[ ($1 == "-step") && (($2 != "compile") && ($2 != "elaborate") && ($2 != "simulate")) ]];then + echo -e "ERROR: Invalid or missing step '$2' (type \"./top.sh -help\" for more information)\n" + exit 1 + fi + + if [[ ($1 == "-lib_map_path") && ($2 == "") ]];then + echo -e "ERROR: Simulation library directory path not specified (type \"./clk_wiz_0.sh -help\" for more information)\n" + exit 1 + fi +} + +# check command line arguments +check_args() +{ + arg_count=$# + if [[ ("$#" == 1) && (("$1" == "-help") || ("$1" == "-h")) ]]; then + usage + fi + while [[ "$#" -gt 0 ]]; do + case $1 in + -step) check_arg_value $1 $2;step=$2; b_step=1; shift;; + -lib_map_path) check_arg_value $1 $2;lib_map_path=$2; b_lib_map_path=1; shift;; + -gen_bypass) b_gen_bypass=1 ;; + -reset_run) b_reset_run=1 ;; + -reset_log) b_reset_log=1 ;; + -keep_index) b_keep_index=1 ;; + -noclean_files) b_noclean_files=1 ;; + -help|-h) ;; + *) echo -e "ERROR: Invalid option specified '$1' (type "./top.sh -help" for more information)\n"; exit 1 ;; + esac + shift + done + + # -reset_run is not applicable with other switches + if [[ ("$arg_count" -gt 1) && ($b_reset_run == 1) ]]; then + echo -e "ERROR: -reset_run switch is not applicable with other switches (type \"./top.sh -help\" for more information)\n" + exit 1 + fi + + # -reset_log is not applicable with other switches + if [[ ("$arg_count" -gt 1) && ($b_reset_log == 1) ]]; then + echo -e "ERROR: -reset_log switch is not applicable with other switches (type \"./top.sh -help\" for more information)\n" + exit 1 + fi + + # -keep_index is not applicable with other switches + if [[ ("$arg_count" -gt 1) && ($b_keep_index == 1) ]]; then + echo -e "ERROR: -keep_index switch is not applicable with other switches (type \"./top.sh -help\" for more information)\n" + exit 1 + fi + + # -noclean_files is not applicable with other switches + if [[ ("$arg_count" -gt 1) && ($b_noclean_files == 1) ]]; then + echo -e "ERROR: -noclean_files switch is not applicable with other switches (type \"./top.sh -help\" for more information)\n" + exit 1 + fi +} + +# script usage +usage() +{ + msg="Usage: clk_wiz_0.sh [-help]\n\ +Usage: clk_wiz_0.sh [-step]\n\ +Usage: clk_wiz_0.sh [-lib_map_path]\n\ +Usage: clk_wiz_0.sh [-reset_run]\n\ +Usage: clk_wiz_0.sh [-reset_log]\n\ +Usage: clk_wiz_0.sh [-keep_index]\n\ +Usage: clk_wiz_0.sh [-noclean_files]\n\n\ +[-help] -- Print help information for this script\n\n\ +[-step <name>] -- Execute specified step (simulate)\n\n\ +[-lib_map_path <path>] -- Compiled simulation library directory path. The simulation library is compiled\n\ +using the compile_simlib tcl command. Please see 'compile_simlib -help' for more information.\n\n\ +[-reset_run] -- Delete simulator generated data files from the previous run and recreate simulator setup\n\ +file/library mappings for a clean run. This switch will not execute steps defined in the script.\n\n\ +NOTE: To keep simulator index file settings from the previous run, use the -keep_index switch\n\ +NOTE: To regenerate simulator index file but keep the simulator generated files, use the -noclean_files switch\n\n\ +[-reset_log] -- Delete simulator generated log files from the previous run\n\n\ +[-keep_index] -- Keep simulator index file settings from the previous run\n\n\ +[-noclean_files] -- Reset previous run, but do not remove simulator generated files from the previous run\n" + echo -e $msg + exit 0 +} + +# initialize globals +step="" +lib_map_path="" +b_step=0 +b_lib_map_path=0 +b_gen_bypass=0 +b_reset_run=0 +b_reset_log=0 +b_keep_index=0 +b_noclean_files=0 + +# launch script +run $* diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xcelium/file_info.txt b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xcelium/file_info.txt new file mode 100644 index 0000000..b33b916 --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xcelium/file_info.txt @@ -0,0 +1,5 @@ +xpm_cdc.sv,systemverilog,xpm,../../../../../../usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/ip/xpm/xpm_cdc/hdl/xpm_cdc.sv,incdir="../../../ipstatic"incdir="../../../ipstatic" +xpm_VCOMP.vhd,vhdl,xpm,../../../../../../usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/ip/xpm/xpm_VCOMP.vhd,incdir="../../../ipstatic"incdir="../../../ipstatic" +clk_wiz_0_clk_wiz.v,verilog,xil_defaultlib,../../../../../src/ip/clk_wiz_0/clk_wiz_0_clk_wiz.v,incdir="../../../ipstatic"incdir="../../../ipstatic" +clk_wiz_0.v,verilog,xil_defaultlib,../../../../../src/ip/clk_wiz_0/clk_wiz_0.v,incdir="../../../ipstatic"incdir="../../../ipstatic" +glbl.v,Verilog,xil_defaultlib,glbl.v diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xcelium/glbl.v b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xcelium/glbl.v new file mode 100755 index 0000000..ed3b249 --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xcelium/glbl.v @@ -0,0 +1,84 @@ +// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $ +`ifndef GLBL +`define GLBL +`timescale 1 ps / 1 ps + +module glbl (); + + parameter ROC_WIDTH = 100000; + parameter TOC_WIDTH = 0; + parameter GRES_WIDTH = 10000; + parameter GRES_START = 10000; + +//-------- STARTUP Globals -------------- + wire GSR; + wire GTS; + wire GWE; + wire PRLD; + wire GRESTORE; + tri1 p_up_tmp; + tri (weak1, strong0) PLL_LOCKG = p_up_tmp; + + wire PROGB_GLBL; + wire CCLKO_GLBL; + wire FCSBO_GLBL; + wire [3:0] DO_GLBL; + wire [3:0] DI_GLBL; + + reg GSR_int; + reg GTS_int; + reg PRLD_int; + reg GRESTORE_int; + +//-------- JTAG Globals -------------- + wire JTAG_TDO_GLBL; + wire JTAG_TCK_GLBL; + wire JTAG_TDI_GLBL; + wire JTAG_TMS_GLBL; + wire JTAG_TRST_GLBL; + + reg JTAG_CAPTURE_GLBL; + reg JTAG_RESET_GLBL; + reg JTAG_SHIFT_GLBL; + reg JTAG_UPDATE_GLBL; + reg JTAG_RUNTEST_GLBL; + + reg JTAG_SEL1_GLBL = 0; + reg JTAG_SEL2_GLBL = 0 ; + reg JTAG_SEL3_GLBL = 0; + reg JTAG_SEL4_GLBL = 0; + + reg JTAG_USER_TDO1_GLBL = 1'bz; + reg JTAG_USER_TDO2_GLBL = 1'bz; + reg JTAG_USER_TDO3_GLBL = 1'bz; + reg JTAG_USER_TDO4_GLBL = 1'bz; + + assign (strong1, weak0) GSR = GSR_int; + assign (strong1, weak0) GTS = GTS_int; + assign (weak1, weak0) PRLD = PRLD_int; + assign (strong1, weak0) GRESTORE = GRESTORE_int; + + initial begin + GSR_int = 1'b1; + PRLD_int = 1'b1; + #(ROC_WIDTH) + GSR_int = 1'b0; + PRLD_int = 1'b0; + end + + initial begin + GTS_int = 1'b1; + #(TOC_WIDTH) + GTS_int = 1'b0; + end + + initial begin + GRESTORE_int = 1'b0; + #(GRES_START); + GRESTORE_int = 1'b1; + #(GRES_WIDTH); + GRESTORE_int = 1'b0; + end + +endmodule +`endif diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xcelium/hdl.var b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xcelium/hdl.var new file mode 100644 index 0000000..e69de29 diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xcelium/simulate.do b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xcelium/simulate.do new file mode 100644 index 0000000..baf3d48 --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xcelium/simulate.do @@ -0,0 +1,7 @@ +set pack_assert_off {numeric_std std_logic_arith} + +database -open waves -into waves.shm -default +catch {probe -create -shm -all -variables -depth 1} msg + +run 1000ns +exit diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xsim/README.txt b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xsim/README.txt new file mode 100644 index 0000000..e749064 --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xsim/README.txt @@ -0,0 +1,50 @@ +################################################################################ +# Vivado (TM) v2024.1 (64-bit) +# +# README.txt: Please read the sections below to understand the steps required to +# run the exported script and how to fetch design source file details +# from the file_info.txt file. +# +# Generated by export_simulation on Wed Feb 26 11:53:03 CET 2025 +# +################################################################################ + +1. Steps to run the generated simulation script + +From the shell prompt in the current directory, issue the following command:- + +./clk_wiz_0.sh + +This command will launch the 'compile', 'elaborate' and 'simulate' functions +implemented in the script file for the 3-step flow. These functions are called +from the main 'run' function in the script file. + +The 'run' function first calls the 'check_args' function, the purpose of which +is to verify the generated script arguments and print error if incorrect switch +is specified. The 'run' function then calls the 'setup' function, the purpose of +which is to specify custom or initialization commands. The function also executes +following sub-functions:- +'reset_run' if -reset_run switch is specified. +'reset_log' if -reset_log switch is specified. + +The purpose of 'reset_run' function' is to delete the simulator generated design +data from the previous run and the purpose of 'reset_log' function' is to delete +the simulator generated log files. + +The 'run' function then calls the 'init_lib' function, the purpose of which is to +create design library mappings and directories. This function is called before the +'compile' step. By default, if '-step' switch is specified with the script then the +script will execute that specfic step, else it will execute all steps applicable +for the target simulator. + +For more information on the script, please type './clk_wiz_0.sh -help' + +2. Design source file information + +export_simulation generates a 'file_info.txt' file that contains design file information +based on the compile order when export_simulation was executed from Vivado. The file +contains information about the file name, type, library it is compiled into, whether +it is part of the IP, associated library, file path information in a comma separated +format. This file can be parsed to extract the required information for generating a +custom script or can be read from verification test infra. + diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xsim/clk_wiz_0.sh b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xsim/clk_wiz_0.sh new file mode 100755 index 0000000..9881fce --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xsim/clk_wiz_0.sh @@ -0,0 +1,330 @@ +#!/usr/bin/env bash +#********************************************************************************************************** +# Vivado (TM) v2024.1 (64-bit) +# +# Script generated by Vivado on Wed Feb 26 11:53:03 CET 2025 +# SW Build 5076996 on Wed May 22 18:36:09 MDT 2024 +# +# Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. +# Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. +# +# Filename : clk_wiz_0.sh +# Simulator : AMD Vivado Simulator +# Description : Simulation script generated by export_simulation Tcl command +# Purpose : Run 'compile', 'elaborate', 'simulate' steps for compiling, elaborating and simulating the +# design. The script will copy the library mapping file from the compiled library directory, +# create design library directories and library mappings in the mapping file. +# +# Usage : clk_wiz_0.sh +# clk_wiz_0.sh [-lib_map_path] [-step] [-keep_index] [-noclean_files]* +# clk_wiz_0.sh [-reset_run] +# clk_wiz_0.sh [-reset_log] +# clk_wiz_0.sh [-help] +# +# * The -noclean_files switch is deprecated and will not peform any function (by default, the +# simulator generated files will not be removed unless -reset_run switch is used) +# +#********************************************************************************************************** + +# catch pipeline exit status +set -Eeuo pipefail + +# set xvlog options +xvlog_opts="--incr --relax " + +# script info +echo -e "clk_wiz_0.sh - Script generated by export_simulation (Vivado v2024.1 (64-bit)-id)\n" + +# main steps +run() +{ + check_args $* + setup + if [[ ($b_step == 1) ]]; then + case $step in + "compile" ) + init_lib + compile + ;; + "elaborate" ) + elaborate + ;; + "simulate" ) + simulate + ;; + * ) + echo -e "ERROR: Invalid or missing step '$step' (type \"./clk_wiz_0.sh -help\" for more information)\n" + exit 1 + esac + else + init_lib + compile + elaborate + simulate + fi +} + +# RUN_STEP: <compile> +compile() +{ + xvlog $xvlog_opts -prj vlog.prj 2>&1 | tee compile.log +} + +# RUN_STEP: <elaborate> +elaborate() +{ + xelab --incr --debug typical --relax --mt 8 -L xil_defaultlib -L unisims_ver -L unimacro_ver -L secureip -L xpm --snapshot clk_wiz_0 xil_defaultlib.clk_wiz_0 xil_defaultlib.glbl -log elaborate.log +} + +# RUN_STEP: <simulate> +simulate() +{ + xsim clk_wiz_0 -key {Behavioral:sim_1:Functional:clk_wiz_0} -tclbatch cmd.tcl -log simulate.log +} + +# STEP: setup +setup() +{ + # delete previous files for a clean rerun + if [[ ($b_reset_run == 1) ]]; then + reset_run + echo -e "INFO: Simulation run files deleted.\n" + exit 0 + fi + + # delete previous log files + if [[ ($b_reset_log == 1) ]]; then + reset_log + echo -e "INFO: Simulation run log files deleted.\n" + exit 0 + fi + + # add any setup/initialization commands here:- + + # <user specific commands> + +} + +# simulator index file/library directory processing +init_lib() +{ + if [[ ($b_keep_index == 1) ]]; then + # keep previous simulator index file + true + else + # copy simulator index file to current directory + copy_setup_file + fi + + if [[ ($lib_map_path != "") ]]; then + ref_lib_dir=$lib_map_path + fi +} + +# copy xsim.ini file +copy_setup_file() +{ + file="xsim.ini" + + if [[ ($lib_map_path == "") ]]; then + lib_map_path="/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/xsim" + fi + + if [[ ($lib_map_path != "") ]]; then + src_file="$lib_map_path/$file" + if [[ -e $src_file ]]; then + cp $src_file . + fi + + # map local design libraries to xsim.ini + map_local_libs + fi +} + +# map local design libraries +map_local_libs() +{ + updated_mappings=() + local_mappings=() + + # local design libraries + local_libs=(xil_defaultlib) + + if [[ 0 == ${#local_libs[@]} ]]; then + return + fi + + file="xsim.ini" + file_backup="xsim.ini.bak" + + if [[ -e $file ]]; then + rm -f $file_backup + + # create a backup copy of the xsim.ini file + cp $file $file_backup + + # read libraries from backup file and search in local library collection + while read -r line + do + IN=$line + + # split mapping entry with '=' delimiter to fetch library name and mapping + read lib_name mapping <<<$(IFS="="; echo $IN) + + # if local library found, then construct the local mapping and add to local mapping collection + if `echo ${local_libs[@]} | grep -wq $lib_name` ; then + line="$lib_name=xsim.dir/$lib_name" + local_mappings+=("$lib_name") + fi + + # add to updated library mapping collection + updated_mappings+=("$line") + done < "$file_backup" + + # append local libraries not found originally from xsim.ini + for (( i=0; i<${#local_libs[*]}; i++ )); do + lib_name="${local_libs[i]}" + if `echo ${local_mappings[@]} | grep -wvq $lib_name` ; then + line="$lib_name=xsim.dir/$lib_name" + updated_mappings+=("$line") + fi + done + + # write updated mappings in xsim.ini + rm -f $file + for (( i=0; i<${#updated_mappings[*]}; i++ )); do + lib_name="${updated_mappings[i]}" + echo $lib_name >> $file + done + else + for (( i=0; i<${#local_libs[*]}; i++ )); do + lib_name="${local_libs[i]}" + mapping="$lib_name=xsim.dir/$lib_name" + echo $mapping >> $file + done + fi +} + +# delete generated data from the previous run +reset_run() +{ + files_to_remove=(xelab.pb xsim.jou xvhdl.log xvlog.log compile.log elaborate.log simulate.log xelab.log xsim.log run.log xvhdl.pb xvlog.pb clk_wiz_0.wdb xsim.dir libdpi.so) + for (( i=0; i<${#files_to_remove[*]}; i++ )); do + file="${files_to_remove[i]}" + if [[ -e $file ]]; then + rm -rf $file + fi + done +} + +# delete generated log files from the previous run +reset_log() +{ + files_to_remove=(xvhdl.log xvlog.log compile.log elaborate.log simulate.log xelab.log xsim.log run.log) + for (( i=0; i<${#files_to_remove[*]}; i++ )); do + file="${files_to_remove[i]}" + if [[ -e $file ]]; then + rm -rf $file + fi + done +} + +# check switch argument value +check_arg_value() +{ + if [[ ($1 == "-step") && (($2 != "compile") && ($2 != "elaborate") && ($2 != "simulate")) ]];then + echo -e "ERROR: Invalid or missing step '$2' (type \"./top.sh -help\" for more information)\n" + exit 1 + fi + + if [[ ($1 == "-lib_map_path") && ($2 == "") ]];then + echo -e "ERROR: Simulation library directory path not specified (type \"./clk_wiz_0.sh -help\" for more information)\n" + exit 1 + fi +} + +# check command line arguments +check_args() +{ + arg_count=$# + if [[ ("$#" == 1) && (("$1" == "-help") || ("$1" == "-h")) ]]; then + usage + fi + while [[ "$#" -gt 0 ]]; do + case $1 in + -step) check_arg_value $1 $2;step=$2; b_step=1; shift;; + -lib_map_path) check_arg_value $1 $2;lib_map_path=$2; b_lib_map_path=1; shift;; + -gen_bypass) b_gen_bypass=1 ;; + -reset_run) b_reset_run=1 ;; + -reset_log) b_reset_log=1 ;; + -keep_index) b_keep_index=1 ;; + -noclean_files) b_noclean_files=1 ;; + -help|-h) ;; + *) echo -e "ERROR: Invalid option specified '$1' (type "./top.sh -help" for more information)\n"; exit 1 ;; + esac + shift + done + + # -reset_run is not applicable with other switches + if [[ ("$arg_count" -gt 1) && ($b_reset_run == 1) ]]; then + echo -e "ERROR: -reset_run switch is not applicable with other switches (type \"./top.sh -help\" for more information)\n" + exit 1 + fi + + # -reset_log is not applicable with other switches + if [[ ("$arg_count" -gt 1) && ($b_reset_log == 1) ]]; then + echo -e "ERROR: -reset_log switch is not applicable with other switches (type \"./top.sh -help\" for more information)\n" + exit 1 + fi + + # -keep_index is not applicable with other switches + if [[ ("$arg_count" -gt 1) && ($b_keep_index == 1) ]]; then + echo -e "ERROR: -keep_index switch is not applicable with other switches (type \"./top.sh -help\" for more information)\n" + exit 1 + fi + + # -noclean_files is not applicable with other switches + if [[ ("$arg_count" -gt 1) && ($b_noclean_files == 1) ]]; then + echo -e "ERROR: -noclean_files switch is not applicable with other switches (type \"./top.sh -help\" for more information)\n" + exit 1 + fi +} + +# script usage +usage() +{ + msg="Usage: clk_wiz_0.sh [-help]\n\ +Usage: clk_wiz_0.sh [-step]\n\ +Usage: clk_wiz_0.sh [-lib_map_path]\n\ +Usage: clk_wiz_0.sh [-reset_run]\n\ +Usage: clk_wiz_0.sh [-reset_log]\n\ +Usage: clk_wiz_0.sh [-keep_index]\n\ +Usage: clk_wiz_0.sh [-noclean_files]\n\n\ +[-help] -- Print help information for this script\n\n\ +[-step <name>] -- Execute specified step (compile, elaborate, simulate)\n\n\ +[-lib_map_path <path>] -- Compiled simulation library directory path. The simulation library is compiled\n\ +using the compile_simlib tcl command. Please see 'compile_simlib -help' for more information.\n\n\ +[-reset_run] -- Delete simulator generated data files from the previous run and recreate simulator setup\n\ +file/library mappings for a clean run. This switch will not execute steps defined in the script.\n\n\ +NOTE: To keep simulator index file settings from the previous run, use the -keep_index switch\n\ +NOTE: To regenerate simulator index file but keep the simulator generated files, use the -noclean_files switch\n\n\ +[-reset_log] -- Delete simulator generated log files from the previous run\n\n\ +[-keep_index] -- Keep simulator index file settings from the previous run\n\n\ +[-noclean_files] -- Reset previous run, but do not remove simulator generated files from the previous run\n" + echo -e $msg + exit 0 +} + +# initialize globals +step="" +lib_map_path="" +b_step=0 +b_lib_map_path=0 +b_gen_bypass=0 +b_reset_run=0 +b_reset_log=0 +b_keep_index=0 +b_noclean_files=0 + +# launch script +run $* diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xsim/cmd.tcl b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xsim/cmd.tcl new file mode 100644 index 0000000..6ac0dc8 --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xsim/cmd.tcl @@ -0,0 +1,12 @@ +set curr_wave [current_wave_config] +if { [string length $curr_wave] == 0 } { + if { [llength [get_objects]] > 0} { + add_wave / + set_property needs_save false [current_wave_config] + } else { + send_msg_id Add_Wave-1 WARNING "No top level signals found. Simulator will start without a wave window. If you want to open a wave window go to 'File->New Waveform Configuration' or type 'create_wave_config' in the TCL console." + } +} + +run 1000ns +quit diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xsim/file_info.txt b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xsim/file_info.txt new file mode 100644 index 0000000..a75fafc --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xsim/file_info.txt @@ -0,0 +1,3 @@ +clk_wiz_0_clk_wiz.v,verilog,xil_defaultlib,../../../../../src/ip/clk_wiz_0/clk_wiz_0_clk_wiz.v,incdir="../../../ipstatic"incdir="../../../ipstatic" +clk_wiz_0.v,verilog,xil_defaultlib,../../../../../src/ip/clk_wiz_0/clk_wiz_0.v,incdir="../../../ipstatic"incdir="../../../ipstatic" +glbl.v,Verilog,xil_defaultlib,glbl.v diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xsim/glbl.v b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xsim/glbl.v new file mode 100755 index 0000000..ed3b249 --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xsim/glbl.v @@ -0,0 +1,84 @@ +// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $ +`ifndef GLBL +`define GLBL +`timescale 1 ps / 1 ps + +module glbl (); + + parameter ROC_WIDTH = 100000; + parameter TOC_WIDTH = 0; + parameter GRES_WIDTH = 10000; + parameter GRES_START = 10000; + +//-------- STARTUP Globals -------------- + wire GSR; + wire GTS; + wire GWE; + wire PRLD; + wire GRESTORE; + tri1 p_up_tmp; + tri (weak1, strong0) PLL_LOCKG = p_up_tmp; + + wire PROGB_GLBL; + wire CCLKO_GLBL; + wire FCSBO_GLBL; + wire [3:0] DO_GLBL; + wire [3:0] DI_GLBL; + + reg GSR_int; + reg GTS_int; + reg PRLD_int; + reg GRESTORE_int; + +//-------- JTAG Globals -------------- + wire JTAG_TDO_GLBL; + wire JTAG_TCK_GLBL; + wire JTAG_TDI_GLBL; + wire JTAG_TMS_GLBL; + wire JTAG_TRST_GLBL; + + reg JTAG_CAPTURE_GLBL; + reg JTAG_RESET_GLBL; + reg JTAG_SHIFT_GLBL; + reg JTAG_UPDATE_GLBL; + reg JTAG_RUNTEST_GLBL; + + reg JTAG_SEL1_GLBL = 0; + reg JTAG_SEL2_GLBL = 0 ; + reg JTAG_SEL3_GLBL = 0; + reg JTAG_SEL4_GLBL = 0; + + reg JTAG_USER_TDO1_GLBL = 1'bz; + reg JTAG_USER_TDO2_GLBL = 1'bz; + reg JTAG_USER_TDO3_GLBL = 1'bz; + reg JTAG_USER_TDO4_GLBL = 1'bz; + + assign (strong1, weak0) GSR = GSR_int; + assign (strong1, weak0) GTS = GTS_int; + assign (weak1, weak0) PRLD = PRLD_int; + assign (strong1, weak0) GRESTORE = GRESTORE_int; + + initial begin + GSR_int = 1'b1; + PRLD_int = 1'b1; + #(ROC_WIDTH) + GSR_int = 1'b0; + PRLD_int = 1'b0; + end + + initial begin + GTS_int = 1'b1; + #(TOC_WIDTH) + GTS_int = 1'b0; + end + + initial begin + GRESTORE_int = 1'b0; + #(GRES_START); + GRESTORE_int = 1'b1; + #(GRES_WIDTH); + GRESTORE_int = 1'b0; + end + +endmodule +`endif diff --git a/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xsim/vlog.prj b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xsim/vlog.prj new file mode 100644 index 0000000..52f6000 --- /dev/null +++ b/proj/AudioProc.ip_user_files/sim_scripts/clk_wiz_0/xsim/vlog.prj @@ -0,0 +1,8 @@ +verilog xil_defaultlib --include "../../../ipstatic" \ +"../../../../../src/ip/clk_wiz_0/clk_wiz_0_clk_wiz.v" \ +"../../../../../src/ip/clk_wiz_0/clk_wiz_0.v" \ + +verilog xil_defaultlib "glbl.v" + +# Do not sort compile order +nosort diff --git a/proj/AudioProc.runs/.jobs/vrs_config_1.xml b/proj/AudioProc.runs/.jobs/vrs_config_1.xml new file mode 100644 index 0000000..d39edd1 --- /dev/null +++ b/proj/AudioProc.runs/.jobs/vrs_config_1.xml @@ -0,0 +1,12 @@ +<?xml version="1.0"?> +<Runs Version="1" Minor="0"> + <Run Id="clk_wiz_0_synth_1" LaunchDir="/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.runs/clk_wiz_0_synth_1" FlowId="Vivado_Synthesis" FromStepId="vivado" ToStepId="vivado"/> + <Parameters> + <Parameter Name="runs.monitorLSFJobs" Val="true" Type="bool"/> + <Parameter Name="runs.enableClusterConf" Val="true" Type="bool"/> + <Parameter Name="general.ignorePathLengthChecks" Val="true" Type="bool"/> + <Parameter Name="general.shortenLongPath" Val="true" Type="bool"/> + </Parameters> + <ProductInfo Name="vivado"/> +</Runs> + diff --git a/proj/AudioProc.runs/clk_wiz_0_synth_1/.Vivado_Synthesis.queue.rst b/proj/AudioProc.runs/clk_wiz_0_synth_1/.Vivado_Synthesis.queue.rst new file mode 100644 index 0000000..e69de29 diff --git a/proj/AudioProc.runs/clk_wiz_0_synth_1/.Xil/clk_wiz_0_propImpl.xdc b/proj/AudioProc.runs/clk_wiz_0_synth_1/.Xil/clk_wiz_0_propImpl.xdc new file mode 100644 index 0000000..5fe727d --- /dev/null +++ b/proj/AudioProc.runs/clk_wiz_0_synth_1/.Xil/clk_wiz_0_propImpl.xdc @@ -0,0 +1,4 @@ +set_property SRC_FILE_INFO {cfile:/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0.xdc rfile:../../../../src/ip/clk_wiz_0/clk_wiz_0.xdc id:1 order:EARLY scoped_inst:inst} [current_design] +current_instance inst +set_property src_info {type:SCOPED_XDC file:1 line:54 export:INPUT save:INPUT read:READ} [current_design] +set_input_jitter [get_clocks -of_objects [get_ports clk_in1]] 0.100 diff --git a/proj/AudioProc.runs/clk_wiz_0_synth_1/.vivado.begin.rst b/proj/AudioProc.runs/clk_wiz_0_synth_1/.vivado.begin.rst new file mode 100644 index 0000000..e298042 --- /dev/null +++ b/proj/AudioProc.runs/clk_wiz_0_synth_1/.vivado.begin.rst @@ -0,0 +1,5 @@ +<?xml version="1.0"?> +<ProcessHandle Version="1" Minor="0"> + <Process Command="vivado" Owner="c24masso" Host="fl-tp-br-604" Pid="36790" HostCore="12" HostMemory="16081508"> + </Process> +</ProcessHandle> diff --git a/proj/AudioProc.runs/clk_wiz_0_synth_1/.vivado.end.rst b/proj/AudioProc.runs/clk_wiz_0_synth_1/.vivado.end.rst new file mode 100644 index 0000000..e69de29 diff --git a/proj/AudioProc.runs/clk_wiz_0_synth_1/ISEWrap.js b/proj/AudioProc.runs/clk_wiz_0_synth_1/ISEWrap.js new file mode 100755 index 0000000..61806d0 --- /dev/null +++ b/proj/AudioProc.runs/clk_wiz_0_synth_1/ISEWrap.js @@ -0,0 +1,270 @@ +// +// Vivado(TM) +// ISEWrap.js: Vivado Runs Script for WSH 5.1/5.6 +// Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. +// Copyright 2022-2023 Advanced Micro Devices, Inc. All Rights Reserved. +// + +// GLOBAL VARIABLES +var ISEShell = new ActiveXObject( "WScript.Shell" ); +var ISEFileSys = new ActiveXObject( "Scripting.FileSystemObject" ); +var ISERunDir = ""; +var ISELogFile = "runme.log"; +var ISELogFileStr = null; +var ISELogEcho = true; +var ISEOldVersionWSH = false; + + + +// BOOTSTRAP +ISEInit(); + + + +// +// ISE FUNCTIONS +// +function ISEInit() { + + // 1. RUN DIR setup + var ISEScrFP = WScript.ScriptFullName; + var ISEScrN = WScript.ScriptName; + ISERunDir = + ISEScrFP.substr( 0, ISEScrFP.length - ISEScrN.length - 1 ); + + // 2. LOG file setup + ISELogFileStr = ISEOpenFile( ISELogFile ); + + // 3. LOG echo? + var ISEScriptArgs = WScript.Arguments; + for ( var loopi=0; loopi<ISEScriptArgs.length; loopi++ ) { + if ( ISEScriptArgs(loopi) == "-quiet" ) { + ISELogEcho = false; + break; + } + } + + // 4. WSH version check + var ISEOptimalVersionWSH = 5.6; + var ISECurrentVersionWSH = WScript.Version; + if ( ISECurrentVersionWSH < ISEOptimalVersionWSH ) { + + ISEStdErr( "" ); + ISEStdErr( "Warning: ExploreAhead works best with Microsoft WSH " + + ISEOptimalVersionWSH + " or higher. Downloads" ); + ISEStdErr( " for upgrading your Windows Scripting Host can be found here: " ); + ISEStdErr( " http://msdn.microsoft.com/downloads/list/webdev.asp" ); + ISEStdErr( "" ); + + ISEOldVersionWSH = true; + } + +} + +function ISEStep( ISEProg, ISEArgs ) { + + // CHECK for a STOP FILE + if ( ISEFileSys.FileExists(ISERunDir + "/.stop.rst") ) { + ISEStdErr( "" ); + ISEStdErr( "*** Halting run - EA reset detected ***" ); + ISEStdErr( "" ); + WScript.Quit( 1 ); + } + + // WRITE STEP HEADER to LOG + ISEStdOut( "" ); + ISEStdOut( "*** Running " + ISEProg ); + ISEStdOut( " with args " + ISEArgs ); + ISEStdOut( "" ); + + // LAUNCH! + var ISEExitCode = ISEExec( ISEProg, ISEArgs ); + if ( ISEExitCode != 0 ) { + WScript.Quit( ISEExitCode ); + } + +} + +function ISEExec( ISEProg, ISEArgs ) { + + var ISEStep = ISEProg; + if (ISEProg == "realTimeFpga" || ISEProg == "planAhead" || ISEProg == "vivado") { + ISEProg += ".bat"; + } + + var ISECmdLine = ISEProg + " " + ISEArgs; + var ISEExitCode = 1; + + if ( ISEOldVersionWSH ) { // WSH 5.1 + + // BEGIN file creation + ISETouchFile( ISEStep, "begin" ); + + // LAUNCH! + ISELogFileStr.Close(); + ISECmdLine = + "%comspec% /c " + ISECmdLine + " >> " + ISELogFile + " 2>&1"; + ISEExitCode = ISEShell.Run( ISECmdLine, 0, true ); + ISELogFileStr = ISEOpenFile( ISELogFile ); + + } else { // WSH 5.6 + + // LAUNCH! + ISEShell.CurrentDirectory = ISERunDir; + + // Redirect STDERR to STDOUT + ISECmdLine = "%comspec% /c " + ISECmdLine + " 2>&1"; + var ISEProcess = ISEShell.Exec( ISECmdLine ); + + // BEGIN file creation + var wbemFlagReturnImmediately = 0x10; + var wbemFlagForwardOnly = 0x20; + var objWMIService = GetObject ("winmgmts:{impersonationLevel=impersonate, (Systemtime)}!//./root/cimv2"); + var processor = objWMIService.ExecQuery("SELECT * FROM Win32_Processor", "WQL",wbemFlagReturnImmediately | wbemFlagForwardOnly); + var computerSystem = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem", "WQL", wbemFlagReturnImmediately | wbemFlagForwardOnly); + var NOC = 0; + var NOLP = 0; + var TPM = 0; + var cpuInfos = new Enumerator(processor); + for(;!cpuInfos.atEnd(); cpuInfos.moveNext()) { + var cpuInfo = cpuInfos.item(); + NOC += cpuInfo.NumberOfCores; + NOLP += cpuInfo.NumberOfLogicalProcessors; + } + var csInfos = new Enumerator(computerSystem); + for(;!csInfos.atEnd(); csInfos.moveNext()) { + var csInfo = csInfos.item(); + TPM += csInfo.TotalPhysicalMemory; + } + + var ISEHOSTCORE = NOLP + var ISEMEMTOTAL = TPM + + var ISENetwork = WScript.CreateObject( "WScript.Network" ); + var ISEHost = ISENetwork.ComputerName; + var ISEUser = ISENetwork.UserName; + var ISEPid = ISEProcess.ProcessID; + var ISEBeginFile = ISEOpenFile( "." + ISEStep + ".begin.rst" ); + ISEBeginFile.WriteLine( "<?xml version=\"1.0\"?>" ); + ISEBeginFile.WriteLine( "<ProcessHandle Version=\"1\" Minor=\"0\">" ); + ISEBeginFile.WriteLine( " <Process Command=\"" + ISEProg + + "\" Owner=\"" + ISEUser + + "\" Host=\"" + ISEHost + + "\" Pid=\"" + ISEPid + + "\" HostCore=\"" + ISEHOSTCORE + + "\" HostMemory=\"" + ISEMEMTOTAL + + "\">" ); + ISEBeginFile.WriteLine( " </Process>" ); + ISEBeginFile.WriteLine( "</ProcessHandle>" ); + ISEBeginFile.Close(); + + var ISEOutStr = ISEProcess.StdOut; + var ISEErrStr = ISEProcess.StdErr; + + // WAIT for ISEStep to finish + while ( ISEProcess.Status == 0 ) { + + // dump stdout then stderr - feels a little arbitrary + while ( !ISEOutStr.AtEndOfStream ) { + ISEStdOut( ISEOutStr.ReadLine() ); + } + + WScript.Sleep( 100 ); + } + + ISEExitCode = ISEProcess.ExitCode; + } + + ISELogFileStr.Close(); + + // END/ERROR file creation + if ( ISEExitCode != 0 ) { + ISETouchFile( ISEStep, "error" ); + + } else { + ISETouchFile( ISEStep, "end" ); + } + + return ISEExitCode; +} + + +// +// UTILITIES +// +function ISEStdOut( ISELine ) { + + ISELogFileStr.WriteLine( ISELine ); + + if ( ISELogEcho ) { + WScript.StdOut.WriteLine( ISELine ); + } +} + +function ISEStdErr( ISELine ) { + + ISELogFileStr.WriteLine( ISELine ); + + if ( ISELogEcho ) { + WScript.StdErr.WriteLine( ISELine ); + } +} + +function ISETouchFile( ISERoot, ISEStatus ) { + + var ISETFile = + ISEOpenFile( "." + ISERoot + "." + ISEStatus + ".rst" ); + ISETFile.Close(); +} + +function ISEOpenFile( ISEFilename ) { + + // This function has been updated to deal with a problem seen in CR #870871. + // In that case the user runs a script that runs impl_1, and then turns around + // and runs impl_1 -to_step write_bitstream. That second run takes place in + // the same directory, which means we may hit some of the same files, and in + // particular, we will open the runme.log file. Even though this script closes + // the file (now), we see cases where a subsequent attempt to open the file + // fails. Perhaps the OS is slow to release the lock, or the disk comes into + // play? In any case, we try to work around this by first waiting if the file + // is already there for an arbitrary 5 seconds. Then we use a try-catch block + // and try to open the file 10 times with a one second delay after each attempt. + // Again, 10 is arbitrary. But these seem to stop the hang in CR #870871. + // If there is an unrecognized exception when trying to open the file, we output + // an error message and write details to an exception.log file. + var ISEFullPath = ISERunDir + "/" + ISEFilename; + if (ISEFileSys.FileExists(ISEFullPath)) { + // File is already there. This could be a problem. Wait in case it is still in use. + WScript.Sleep(5000); + } + var i; + for (i = 0; i < 10; ++i) { + try { + return ISEFileSys.OpenTextFile(ISEFullPath, 8, true); + } catch (exception) { + var error_code = exception.number & 0xFFFF; // The other bits are a facility code. + if (error_code == 52) { // 52 is bad file name or number. + // Wait a second and try again. + WScript.Sleep(1000); + continue; + } else { + WScript.StdErr.WriteLine("ERROR: Exception caught trying to open file " + ISEFullPath); + var exceptionFilePath = ISERunDir + "/exception.log"; + if (!ISEFileSys.FileExists(exceptionFilePath)) { + WScript.StdErr.WriteLine("See file " + exceptionFilePath + " for details."); + var exceptionFile = ISEFileSys.OpenTextFile(exceptionFilePath, 8, true); + exceptionFile.WriteLine("ERROR: Exception caught trying to open file " + ISEFullPath); + exceptionFile.WriteLine("\tException name: " + exception.name); + exceptionFile.WriteLine("\tException error code: " + error_code); + exceptionFile.WriteLine("\tException message: " + exception.message); + exceptionFile.Close(); + } + throw exception; + } + } + } + // If we reached this point, we failed to open the file after 10 attempts. + // We need to error out. + WScript.StdErr.WriteLine("ERROR: Failed to open file " + ISEFullPath); + WScript.Quit(1); +} diff --git a/proj/AudioProc.runs/clk_wiz_0_synth_1/ISEWrap.sh b/proj/AudioProc.runs/clk_wiz_0_synth_1/ISEWrap.sh new file mode 100755 index 0000000..05d5381 --- /dev/null +++ b/proj/AudioProc.runs/clk_wiz_0_synth_1/ISEWrap.sh @@ -0,0 +1,85 @@ +#!/bin/sh + +# +# Vivado(TM) +# ISEWrap.sh: Vivado Runs Script for UNIX +# Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. +# Copyright 2022-2023 Advanced Micro Devices, Inc. All Rights Reserved. +# + +cmd_exists() +{ + command -v "$1" >/dev/null 2>&1 +} + +HD_LOG=$1 +shift + +# CHECK for a STOP FILE +if [ -f .stop.rst ] +then +echo "" >> $HD_LOG +echo "*** Halting run - EA reset detected ***" >> $HD_LOG +echo "" >> $HD_LOG +exit 1 +fi + +ISE_STEP=$1 +shift + +# WRITE STEP HEADER to LOG +echo "" >> $HD_LOG +echo "*** Running $ISE_STEP" >> $HD_LOG +echo " with args $@" >> $HD_LOG +echo "" >> $HD_LOG + +# LAUNCH! +$ISE_STEP "$@" >> $HD_LOG 2>&1 & + +# BEGIN file creation +ISE_PID=$! + +HostNameFile=/proc/sys/kernel/hostname +if cmd_exists hostname +then +ISE_HOST=$(hostname) +elif cmd_exists uname +then +ISE_HOST=$(uname -n) +elif [ -f "$HostNameFile" ] && [ -r $HostNameFile ] && [ -s $HostNameFile ] +then +ISE_HOST=$(cat $HostNameFile) +elif [ X != X$HOSTNAME ] +then +ISE_HOST=$HOSTNAME #bash +else +ISE_HOST=$HOST #csh +fi + +ISE_USER=$USER + +ISE_HOSTCORE=$(awk '/^processor/{print $3}' /proc/cpuinfo | wc -l) +ISE_MEMTOTAL=$(awk '/MemTotal/ {print $2}' /proc/meminfo) + +ISE_BEGINFILE=.$ISE_STEP.begin.rst +/bin/touch $ISE_BEGINFILE +echo "<?xml version=\"1.0\"?>" >> $ISE_BEGINFILE +echo "<ProcessHandle Version=\"1\" Minor=\"0\">" >> $ISE_BEGINFILE +echo " <Process Command=\"$ISE_STEP\" Owner=\"$ISE_USER\" Host=\"$ISE_HOST\" Pid=\"$ISE_PID\" HostCore=\"$ISE_HOSTCORE\" HostMemory=\"$ISE_MEMTOTAL\">" >> $ISE_BEGINFILE +echo " </Process>" >> $ISE_BEGINFILE +echo "</ProcessHandle>" >> $ISE_BEGINFILE + +# WAIT for ISEStep to finish +wait $ISE_PID + +# END/ERROR file creation +RETVAL=$? +if [ $RETVAL -eq 0 ] +then + /bin/touch .$ISE_STEP.end.rst +else + /bin/touch .$ISE_STEP.error.rst +fi + +exit $RETVAL + diff --git a/proj/AudioProc.runs/clk_wiz_0_synth_1/__synthesis_is_complete__ b/proj/AudioProc.runs/clk_wiz_0_synth_1/__synthesis_is_complete__ new file mode 100644 index 0000000..e69de29 diff --git a/proj/AudioProc.runs/clk_wiz_0_synth_1/clk_wiz_0.dcp b/proj/AudioProc.runs/clk_wiz_0_synth_1/clk_wiz_0.dcp new file mode 100644 index 0000000000000000000000000000000000000000..f726fa3af1501226fc8fa1c14219391554de4aa4 GIT binary patch literal 13383 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 literal 0 HcmV?d00001 diff --git a/proj/AudioProc.runs/clk_wiz_0_synth_1/clk_wiz_0.tcl b/proj/AudioProc.runs/clk_wiz_0_synth_1/clk_wiz_0.tcl new file mode 100644 index 0000000..65a7b6c --- /dev/null +++ b/proj/AudioProc.runs/clk_wiz_0_synth_1/clk_wiz_0.tcl @@ -0,0 +1,234 @@ +# +# Synthesis run script generated by Vivado +# + +set TIME_start [clock seconds] +namespace eval ::optrace { + variable script "/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.runs/clk_wiz_0_synth_1/clk_wiz_0.tcl" + variable category "vivado_synth" +} + +# Try to connect to running dispatch if we haven't done so already. +# This code assumes that the Tcl interpreter is not using threads, +# since the ::dispatch::connected variable isn't mutex protected. +if {![info exists ::dispatch::connected]} { + namespace eval ::dispatch { + variable connected false + if {[llength [array get env XILINX_CD_CONNECT_ID]] > 0} { + set result "true" + if {[catch { + if {[lsearch -exact [package names] DispatchTcl] < 0} { + set result [load librdi_cd_clienttcl[info sharedlibextension]] + } + if {$result eq "false"} { + puts "WARNING: Could not load dispatch client library" + } + set connect_id [ ::dispatch::init_client -mode EXISTING_SERVER ] + if { $connect_id eq "" } { + puts "WARNING: Could not initialize dispatch client" + } else { + puts "INFO: Dispatch client connection id - $connect_id" + set connected true + } + } catch_res]} { + puts "WARNING: failed to connect to dispatch server - $catch_res" + } + } + } +} +if {$::dispatch::connected} { + # Remove the dummy proc if it exists. + if { [expr {[llength [info procs ::OPTRACE]] > 0}] } { + rename ::OPTRACE "" + } + proc ::OPTRACE { task action {tags {} } } { + ::vitis_log::op_trace "$task" $action -tags $tags -script $::optrace::script -category $::optrace::category + } + # dispatch is generic. We specifically want to attach logging. + ::vitis_log::connect_client +} else { + # Add dummy proc if it doesn't exist. + if { [expr {[llength [info procs ::OPTRACE]] == 0}] } { + proc ::OPTRACE {{arg1 \"\" } {arg2 \"\"} {arg3 \"\" } {arg4 \"\"} {arg5 \"\" } {arg6 \"\"}} { + # Do nothing + } + } +} + +OPTRACE "clk_wiz_0_synth_1" START { ROLLUP_AUTO } +set_param project.vivado.isBlockSynthRun true +set_msg_config -msgmgr_mode ooc_run +OPTRACE "Creating in-memory project" START { } +create_project -in_memory -part xc7a200tsbg484-1 + +set_param project.singleFileAddWarning.threshold 0 +set_param project.compositeFile.enableAutoGeneration 0 +set_param synth.vivado.isSynthRun true +set_msg_config -source 4 -id {IP_Flow 19-2162} -severity warning -new_severity info +set_property webtalk.parent_dir /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.cache/wt [current_project] +set_property parent.project_path /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.xpr [current_project] +set_property XPM_LIBRARIES XPM_CDC [current_project] +set_property default_lib xil_defaultlib [current_project] +set_property target_language VHDL [current_project] +set_property ip_repo_paths /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/repo [current_project] +update_ip_catalog +set_property ip_output_repo /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.cache/ip [current_project] +set_property ip_cache_permissions {read write} [current_project] +OPTRACE "Creating in-memory project" END { } +OPTRACE "Adding files" START { } +read_ip -quiet /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0.xci +set_property used_in_implementation false [get_files -all /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0_board.xdc] +set_property used_in_implementation false [get_files -all /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0.xdc] +set_property used_in_implementation false [get_files -all /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0_ooc.xdc] + +OPTRACE "Adding files" END { } +# Mark all dcp files as not used in implementation to prevent them from being +# stitched into the results of this synthesis run. Any black boxes in the +# design are intentionally left as such for best results. Dcp files will be +# stitched into the design at a later time, either when this synthesis run is +# opened, or when it is stitched into a dependent implementation run. +foreach dcp [get_files -quiet -all -filter file_type=="Design\ Checkpoint"] { + set_property used_in_implementation false $dcp +} +read_xdc dont_touch.xdc +set_property used_in_implementation false [get_files dont_touch.xdc] +set_param ips.enableIPCacheLiteLoad 1 +OPTRACE "Configure IP Cache" START { } + +set cacheID [config_ip_cache -export -no_bom -dir /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.runs/clk_wiz_0_synth_1 -new_name clk_wiz_0 -ip [get_ips clk_wiz_0]] + +OPTRACE "Configure IP Cache" END { } +if { $cacheID == "" } { +close [open __synthesis_is_running__ w] + +OPTRACE "synth_design" START { } +synth_design -top clk_wiz_0 -part xc7a200tsbg484-1 -incremental_mode off -mode out_of_context +OPTRACE "synth_design" END { } +OPTRACE "Write IP Cache" START { } + +#--------------------------------------------------------- +# Generate Checkpoint/Stub/Simulation Files For IP Cache +#--------------------------------------------------------- +# disable binary constraint mode for IPCache checkpoints +set_param constraints.enableBinaryConstraints false + +catch { + write_checkpoint -force -noxdef -rename_prefix clk_wiz_0_ clk_wiz_0.dcp + + set ipCachedFiles {} + write_verilog -force -mode synth_stub -rename_top decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix -prefix decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix_ clk_wiz_0_stub.v + lappend ipCachedFiles clk_wiz_0_stub.v + + write_vhdl -force -mode synth_stub -rename_top decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix -prefix decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix_ clk_wiz_0_stub.vhdl + lappend ipCachedFiles clk_wiz_0_stub.vhdl + + write_verilog -force -mode funcsim -rename_top decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix -prefix decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix_ clk_wiz_0_sim_netlist.v + lappend ipCachedFiles clk_wiz_0_sim_netlist.v + + write_vhdl -force -mode funcsim -rename_top decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix -prefix decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix_ clk_wiz_0_sim_netlist.vhdl + lappend ipCachedFiles clk_wiz_0_sim_netlist.vhdl + set TIME_taken [expr [clock seconds] - $TIME_start] + + if { [get_msg_config -count -severity {CRITICAL WARNING}] == 0 } { + config_ip_cache -add -dcp clk_wiz_0.dcp -move_files $ipCachedFiles -synth_runtime $TIME_taken -ip [get_ips clk_wiz_0] + } +OPTRACE "Write IP Cache" END { } +} +if { [get_msg_config -count -severity {CRITICAL WARNING}] > 0 } { + send_msg_id runtcl-6 info "Synthesis results are not added to the cache due to CRITICAL_WARNING" +} + +rename_ref -prefix_all clk_wiz_0_ + +OPTRACE "write_checkpoint" START { CHECKPOINT } +# disable binary constraint mode for synth run checkpoints +set_param constraints.enableBinaryConstraints false +write_checkpoint -force -noxdef clk_wiz_0.dcp +OPTRACE "write_checkpoint" END { } +OPTRACE "synth reports" START { REPORT } +generate_parallel_reports -reports { "report_utilization -file clk_wiz_0_utilization_synth.rpt -pb clk_wiz_0_utilization_synth.pb" } +OPTRACE "synth reports" END { } + +if { [catch { + file copy -force /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.runs/clk_wiz_0_synth_1/clk_wiz_0.dcp /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0.dcp +} _RESULT ] } { + send_msg_id runtcl-3 status "ERROR: Unable to successfully create or copy the sub-design checkpoint file." + error "ERROR: Unable to successfully create or copy the sub-design checkpoint file." +} + +if { [catch { + write_verilog -force -mode synth_stub /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0_stub.v +} _RESULT ] } { + puts "CRITICAL WARNING: Unable to successfully create a Verilog synthesis stub for the sub-design. This may lead to errors in top level synthesis of the design. Error reported: $_RESULT" +} + +if { [catch { + write_vhdl -force -mode synth_stub /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0_stub.vhdl +} _RESULT ] } { + puts "CRITICAL WARNING: Unable to successfully create a VHDL synthesis stub for the sub-design. This may lead to errors in top level synthesis of the design. Error reported: $_RESULT" +} + +if { [catch { + write_verilog -force -mode funcsim /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0_sim_netlist.v +} _RESULT ] } { + puts "CRITICAL WARNING: Unable to successfully create the Verilog functional simulation sub-design file. Post-Synthesis Functional Simulation with this file may not be possible or may give incorrect results. Error reported: $_RESULT" +} + +if { [catch { + write_vhdl -force -mode funcsim /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0_sim_netlist.vhdl +} _RESULT ] } { + puts "CRITICAL WARNING: Unable to successfully create the VHDL functional simulation sub-design file. Post-Synthesis Functional Simulation with this file may not be possible or may give incorrect results. Error reported: $_RESULT" +} + + +} else { + + +if { [catch { + file copy -force /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.runs/clk_wiz_0_synth_1/clk_wiz_0.dcp /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0.dcp +} _RESULT ] } { + send_msg_id runtcl-3 status "ERROR: Unable to successfully create or copy the sub-design checkpoint file." + error "ERROR: Unable to successfully create or copy the sub-design checkpoint file." +} + +if { [catch { + file rename -force /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.runs/clk_wiz_0_synth_1/clk_wiz_0_stub.v /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0_stub.v +} _RESULT ] } { + puts "CRITICAL WARNING: Unable to successfully create a Verilog synthesis stub for the sub-design. This may lead to errors in top level synthesis of the design. Error reported: $_RESULT" +} + +if { [catch { + file rename -force /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.runs/clk_wiz_0_synth_1/clk_wiz_0_stub.vhdl /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0_stub.vhdl +} _RESULT ] } { + puts "CRITICAL WARNING: Unable to successfully create a VHDL synthesis stub for the sub-design. This may lead to errors in top level synthesis of the design. Error reported: $_RESULT" +} + +if { [catch { + file rename -force /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.runs/clk_wiz_0_synth_1/clk_wiz_0_sim_netlist.v /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0_sim_netlist.v +} _RESULT ] } { + puts "CRITICAL WARNING: Unable to successfully create the Verilog functional simulation sub-design file. Post-Synthesis Functional Simulation with this file may not be possible or may give incorrect results. Error reported: $_RESULT" +} + +if { [catch { + file rename -force /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.runs/clk_wiz_0_synth_1/clk_wiz_0_sim_netlist.vhdl /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0_sim_netlist.vhdl +} _RESULT ] } { + puts "CRITICAL WARNING: Unable to successfully create the VHDL functional simulation sub-design file. Post-Synthesis Functional Simulation with this file may not be possible or may give incorrect results. Error reported: $_RESULT" +} + +close [open .end.used_ip_cache.rst w] +}; # end if cacheID + +if {[file isdir /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.ip_user_files/ip/clk_wiz_0]} { + catch { + file copy -force /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0_stub.v /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.ip_user_files/ip/clk_wiz_0 + } +} + +if {[file isdir /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.ip_user_files/ip/clk_wiz_0]} { + catch { + file copy -force /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0_stub.vhdl /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.ip_user_files/ip/clk_wiz_0 + } +} +file delete __synthesis_is_running__ +close [open __synthesis_is_complete__ w] +OPTRACE "clk_wiz_0_synth_1" END { } diff --git a/proj/AudioProc.runs/clk_wiz_0_synth_1/clk_wiz_0.vds b/proj/AudioProc.runs/clk_wiz_0_synth_1/clk_wiz_0.vds new file mode 100644 index 0000000..f00f5a8 --- /dev/null +++ b/proj/AudioProc.runs/clk_wiz_0_synth_1/clk_wiz_0.vds @@ -0,0 +1,272 @@ +#----------------------------------------------------------- +# Vivado v2024.1 (64-bit) +# SW Build 5076996 on Wed May 22 18:36:09 MDT 2024 +# IP Build 5075265 on Wed May 22 21:45:21 MDT 2024 +# SharedData Build 5076995 on Wed May 22 18:29:18 MDT 2024 +# Start of session at: Wed Feb 26 11:53:05 2025 +# Process ID: 36861 +# Current directory: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.runs/clk_wiz_0_synth_1 +# Command line: vivado -log clk_wiz_0.vds -product Vivado -mode batch -messageDb vivado.pb -notrace -source clk_wiz_0.tcl +# Log file: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.runs/clk_wiz_0_synth_1/clk_wiz_0.vds +# Journal file: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.runs/clk_wiz_0_synth_1/vivado.jou +# Running On :fl-tp-br-604 +# Platform :Ubuntu +# Operating System :Ubuntu 24.04.1 LTS +# Processor Detail :Intel(R) Core(TM) i5-10500 CPU @ 3.10GHz +# CPU Frequency :4248.581 MHz +# CPU Physical cores:6 +# CPU Logical cores :12 +# Host memory :16467 MB +# Swap memory :4294 MB +# Total Virtual :20762 MB +# Available Virtual :15254 MB +#----------------------------------------------------------- +source clk_wiz_0.tcl -notrace +create_project: Time (s): cpu = 00:00:13 ; elapsed = 00:00:26 . Memory (MB): peak = 1680.684 ; gain = 327.840 ; free physical = 5579 ; free virtual = 14118 +INFO: [IP_Flow 19-234] Refreshing IP repositories +WARNING: [IP_Flow 19-2248] Failed to load user IP repository '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/repo'; Can't find the specified path. +If this directory should no longer be in your list of user repositories, go to the IP Settings dialog and remove it. +INFO: [IP_Flow 19-2313] Loaded Vivado IP repository '/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/ip'. +INFO: [IP_Flow 19-6924] IPCACHE: Running cache check for IP inst: clk_wiz_0 +Command: synth_design -top clk_wiz_0 -part xc7a200tsbg484-1 -incremental_mode off -mode out_of_context +Starting synth_design +Attempting to get a license for feature 'Synthesis' and/or device 'xc7a200t' +INFO: [Common 17-349] Got license for feature 'Synthesis' and/or device 'xc7a200t' +INFO: [Device 21-403] Loading part xc7a200tsbg484-1 +INFO: [Device 21-9227] Part: xc7a200tsbg484-1 does not have CEAM library. +INFO: [Synth 8-7079] Multithreading enabled for synth_design using a maximum of 4 processes. +INFO: [Synth 8-7078] Launching helper process for spawning children vivado processes +INFO: [Synth 8-7075] Helper process launched with PID 37082 +--------------------------------------------------------------------------------- +Starting RTL Elaboration : Time (s): cpu = 00:00:03 ; elapsed = 00:00:05 . Memory (MB): peak = 2501.867 ; gain = 420.523 ; free physical = 4412 ; free virtual = 12955 +--------------------------------------------------------------------------------- +INFO: [Synth 8-6157] synthesizing module 'clk_wiz_0' [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0.v:68] +INFO: [Synth 8-6157] synthesizing module 'clk_wiz_0_clk_wiz' [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0_clk_wiz.v:68] +INFO: [Synth 8-6157] synthesizing module 'IBUF' [/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/scripts/rt/data/unisim_comp.v:73643] +INFO: [Synth 8-6155] done synthesizing module 'IBUF' (0#1) [/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/scripts/rt/data/unisim_comp.v:73643] +INFO: [Synth 8-6157] synthesizing module 'MMCME2_ADV' [/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/scripts/rt/data/unisim_comp.v:82388] + Parameter BANDWIDTH bound to: OPTIMIZED - type: string + Parameter CLKFBOUT_MULT_F bound to: 6.000000 - type: double + Parameter CLKFBOUT_PHASE bound to: 0.000000 - type: double + Parameter CLKFBOUT_USE_FINE_PS bound to: FALSE - type: string + Parameter CLKIN1_PERIOD bound to: 10.000000 - type: double + Parameter CLKOUT0_DIVIDE_F bound to: 6.000000 - type: double + Parameter CLKOUT0_DUTY_CYCLE bound to: 0.500000 - type: double + Parameter CLKOUT0_PHASE bound to: 0.000000 - type: double + Parameter CLKOUT0_USE_FINE_PS bound to: FALSE - type: string + Parameter CLKOUT1_DIVIDE bound to: 3 - type: integer + Parameter CLKOUT1_DUTY_CYCLE bound to: 0.500000 - type: double + Parameter CLKOUT1_PHASE bound to: 0.000000 - type: double + Parameter CLKOUT1_USE_FINE_PS bound to: FALSE - type: string + Parameter CLKOUT2_DIVIDE bound to: 50 - type: integer + Parameter CLKOUT2_DUTY_CYCLE bound to: 0.500000 - type: double + Parameter CLKOUT2_PHASE bound to: 0.000000 - type: double + Parameter CLKOUT2_USE_FINE_PS bound to: FALSE - type: string + Parameter CLKOUT3_DIVIDE bound to: 12 - type: integer + Parameter CLKOUT3_DUTY_CYCLE bound to: 0.500000 - type: double + Parameter CLKOUT3_PHASE bound to: 0.000000 - type: double + Parameter CLKOUT3_USE_FINE_PS bound to: FALSE - type: string + Parameter CLKOUT4_CASCADE bound to: FALSE - type: string + Parameter COMPENSATION bound to: ZHOLD - type: string + Parameter DIVCLK_DIVIDE bound to: 1 - type: integer + Parameter STARTUP_WAIT bound to: FALSE - type: string +INFO: [Synth 8-6155] done synthesizing module 'MMCME2_ADV' (0#1) [/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/scripts/rt/data/unisim_comp.v:82388] +INFO: [Synth 8-6157] synthesizing module 'BUFG' [/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/scripts/rt/data/unisim_comp.v:1951] +INFO: [Synth 8-6155] done synthesizing module 'BUFG' (0#1) [/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/scripts/rt/data/unisim_comp.v:1951] +INFO: [Synth 8-6155] done synthesizing module 'clk_wiz_0_clk_wiz' (0#1) [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0_clk_wiz.v:68] +INFO: [Synth 8-6155] done synthesizing module 'clk_wiz_0' (0#1) [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0.v:68] +--------------------------------------------------------------------------------- +Finished RTL Elaboration : Time (s): cpu = 00:00:04 ; elapsed = 00:00:06 . Memory (MB): peak = 2578.805 ; gain = 497.461 ; free physical = 4294 ; free virtual = 12848 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Handling Custom Attributes +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Handling Custom Attributes : Time (s): cpu = 00:00:04 ; elapsed = 00:00:06 . Memory (MB): peak = 2596.617 ; gain = 515.273 ; free physical = 4291 ; free virtual = 12849 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished RTL Optimization Phase 1 : Time (s): cpu = 00:00:04 ; elapsed = 00:00:06 . Memory (MB): peak = 2596.617 ; gain = 515.273 ; free physical = 4291 ; free virtual = 12849 +--------------------------------------------------------------------------------- +Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 2602.555 ; gain = 0.000 ; free physical = 4291 ; free virtual = 12849 +INFO: [Netlist 29-17] Analyzing 1 Unisim elements for replacement +INFO: [Netlist 29-28] Unisim Transformation completed in 0 CPU seconds +INFO: [Project 1-570] Preparing netlist for logic optimization + +Processing XDC Constraints +Initializing timing engine +Parsing XDC File [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0_ooc.xdc] for cell 'inst' +Finished Parsing XDC File [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0_ooc.xdc] for cell 'inst' +Parsing XDC File [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0_board.xdc] for cell 'inst' +Finished Parsing XDC File [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0_board.xdc] for cell 'inst' +Parsing XDC File [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0.xdc] for cell 'inst' +Finished Parsing XDC File [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0.xdc] for cell 'inst' +INFO: [Project 1-236] Implementation specific constraints were found while reading constraint file [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0.xdc]. These constraints will be ignored for synthesis but will be used in implementation. Impacted constraints are listed in the file [.Xil/clk_wiz_0_propImpl.xdc]. +Resolution: To avoid this warning, move constraints listed in [.Xil/clk_wiz_0_propImpl.xdc] to another XDC file and exclude this new file from synthesis with the used_in_synthesis property (File Properties dialog in GUI) and re-run elaboration/synthesis. +INFO: [Timing 38-2] Deriving generated clocks +Parsing XDC File [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.runs/clk_wiz_0_synth_1/dont_touch.xdc] +Finished Parsing XDC File [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.runs/clk_wiz_0_synth_1/dont_touch.xdc] +Completed Processing XDC Constraints + +Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 2669.555 ; gain = 0.000 ; free physical = 4268 ; free virtual = 12827 +INFO: [Project 1-111] Unisim Transformation Summary: +No Unisim elements were transformed. + +Constraint Validation Runtime : Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.05 . Memory (MB): peak = 2669.555 ; gain = 0.000 ; free physical = 4268 ; free virtual = 12827 +INFO: [Designutils 20-5008] Incremental synthesis strategy off +--------------------------------------------------------------------------------- +Finished Constraint Validation : Time (s): cpu = 00:00:10 ; elapsed = 00:00:15 . Memory (MB): peak = 2669.555 ; gain = 588.211 ; free physical = 4286 ; free virtual = 12848 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Loading Part and Timing Information +--------------------------------------------------------------------------------- +Loading part: xc7a200tsbg484-1 +--------------------------------------------------------------------------------- +Finished Loading Part and Timing Information : Time (s): cpu = 00:00:10 ; elapsed = 00:00:15 . Memory (MB): peak = 2677.559 ; gain = 596.215 ; free physical = 4286 ; free virtual = 12848 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Applying 'set_property' XDC Constraints +--------------------------------------------------------------------------------- +Applied set_property KEEP_HIERARCHY = SOFT for inst. (constraint file /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.runs/clk_wiz_0_synth_1/dont_touch.xdc, line 9). +--------------------------------------------------------------------------------- +Finished applying 'set_property' XDC Constraints : Time (s): cpu = 00:00:10 ; elapsed = 00:00:15 . Memory (MB): peak = 2677.559 ; gain = 596.215 ; free physical = 4300 ; free virtual = 12861 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished RTL Optimization Phase 2 : Time (s): cpu = 00:00:10 ; elapsed = 00:00:15 . Memory (MB): peak = 2677.559 ; gain = 596.215 ; free physical = 4298 ; free virtual = 12862 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start RTL Component Statistics +--------------------------------------------------------------------------------- +Detailed RTL Component Info : +--------------------------------------------------------------------------------- +Finished RTL Component Statistics +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Part Resource Summary +--------------------------------------------------------------------------------- +Part Resources: +DSPs: 740 (col length:100) +BRAMs: 730 (col length: RAMB18 100 RAMB36 50) +--------------------------------------------------------------------------------- +Finished Part Resource Summary +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Cross Boundary and Area Optimization +--------------------------------------------------------------------------------- +WARNING: [Synth 8-7080] Parallel synthesis criteria is not met +--------------------------------------------------------------------------------- +Finished Cross Boundary and Area Optimization : Time (s): cpu = 00:00:11 ; elapsed = 00:00:16 . Memory (MB): peak = 2677.559 ; gain = 596.215 ; free physical = 4299 ; free virtual = 12862 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Applying XDC Timing Constraints +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Applying XDC Timing Constraints : Time (s): cpu = 00:00:16 ; elapsed = 00:00:22 . Memory (MB): peak = 2677.559 ; gain = 596.215 ; free physical = 4288 ; free virtual = 12863 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Timing Optimization +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Timing Optimization : Time (s): cpu = 00:00:16 ; elapsed = 00:00:22 . Memory (MB): peak = 2677.559 ; gain = 596.215 ; free physical = 4288 ; free virtual = 12863 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Technology Mapping +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Technology Mapping : Time (s): cpu = 00:00:16 ; elapsed = 00:00:22 . Memory (MB): peak = 2677.559 ; gain = 596.215 ; free physical = 4287 ; free virtual = 12863 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start IO Insertion +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Flattening Before IO Insertion +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Flattening Before IO Insertion +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Final Netlist Cleanup +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Final Netlist Cleanup +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished IO Insertion : Time (s): cpu = 00:00:19 ; elapsed = 00:00:25 . Memory (MB): peak = 2677.559 ; gain = 596.215 ; free physical = 4289 ; free virtual = 12865 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Renaming Generated Instances +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Renaming Generated Instances : Time (s): cpu = 00:00:19 ; elapsed = 00:00:25 . Memory (MB): peak = 2677.559 ; gain = 596.215 ; free physical = 4289 ; free virtual = 12865 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Rebuilding User Hierarchy +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Rebuilding User Hierarchy : Time (s): cpu = 00:00:19 ; elapsed = 00:00:25 . Memory (MB): peak = 2677.559 ; gain = 596.215 ; free physical = 4289 ; free virtual = 12865 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Renaming Generated Ports +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Renaming Generated Ports : Time (s): cpu = 00:00:19 ; elapsed = 00:00:25 . Memory (MB): peak = 2677.559 ; gain = 596.215 ; free physical = 4289 ; free virtual = 12865 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Handling Custom Attributes +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Handling Custom Attributes : Time (s): cpu = 00:00:19 ; elapsed = 00:00:25 . Memory (MB): peak = 2677.559 ; gain = 596.215 ; free physical = 4289 ; free virtual = 12865 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Renaming Generated Nets +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Renaming Generated Nets : Time (s): cpu = 00:00:19 ; elapsed = 00:00:25 . Memory (MB): peak = 2677.559 ; gain = 596.215 ; free physical = 4289 ; free virtual = 12865 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Writing Synthesis Report +--------------------------------------------------------------------------------- + +Report BlackBoxes: ++-+--------------+----------+ +| |BlackBox name |Instances | ++-+--------------+----------+ ++-+--------------+----------+ + +Report Cell Usage: ++------+-----------+------+ +| |Cell |Count | ++------+-----------+------+ +|1 |BUFG | 5| +|2 |MMCME2_ADV | 1| +|3 |IBUF | 1| ++------+-----------+------+ +--------------------------------------------------------------------------------- +Finished Writing Synthesis Report : Time (s): cpu = 00:00:19 ; elapsed = 00:00:25 . Memory (MB): peak = 2677.559 ; gain = 596.215 ; free physical = 4289 ; free virtual = 12865 +--------------------------------------------------------------------------------- +Synthesis finished with 0 errors, 0 critical warnings and 1 warnings. +Synthesis Optimization Runtime : Time (s): cpu = 00:00:17 ; elapsed = 00:00:21 . Memory (MB): peak = 2677.559 ; gain = 523.277 ; free physical = 4277 ; free virtual = 12864 +Synthesis Optimization Complete : Time (s): cpu = 00:00:19 ; elapsed = 00:00:25 . Memory (MB): peak = 2677.566 ; gain = 596.215 ; free physical = 4277 ; free virtual = 12864 +INFO: [Project 1-571] Translating synthesized netlist +Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 2677.566 ; gain = 0.000 ; free physical = 4277 ; free virtual = 12864 +INFO: [Netlist 29-17] Analyzing 1 Unisim elements for replacement +INFO: [Netlist 29-28] Unisim Transformation completed in 0 CPU seconds +INFO: [Project 1-570] Preparing netlist for logic optimization +INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s). +Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 2677.566 ; gain = 0.000 ; free physical = 4553 ; free virtual = 13141 +INFO: [Project 1-111] Unisim Transformation Summary: +No Unisim elements were transformed. + +Synth Design complete | Checksum: 2bb42201 +INFO: [Common 17-83] Releasing license: Synthesis +33 Infos, 2 Warnings, 0 Critical Warnings and 0 Errors encountered. +synth_design completed successfully +synth_design: Time (s): cpu = 00:00:25 ; elapsed = 00:00:37 . Memory (MB): peak = 2677.566 ; gain = 981.039 ; free physical = 4553 ; free virtual = 13141 +INFO: [Common 17-2834] synth_design peak Physical Memory [PSS] (MB): overall = 2253.438; main = 1881.028; forked = 419.174 +INFO: [Common 17-2834] synth_design peak Virtual Memory [VSS] (MB): overall = 3782.270; main = 2677.562; forked = 1104.707 +Write ShapeDB Complete: Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 2701.570 ; gain = 0.000 ; free physical = 4580 ; free virtual = 13168 +INFO: [Common 17-1381] The checkpoint '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.runs/clk_wiz_0_synth_1/clk_wiz_0.dcp' has been generated. +INFO: [Coretcl 2-1648] Added synthesis output to IP cache for IP clk_wiz_0, cache-ID = 0edd54b7fee8338b +Write ShapeDB Complete: Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 2757.598 ; gain = 0.000 ; free physical = 4578 ; free virtual = 13170 +INFO: [Common 17-1381] The checkpoint '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.runs/clk_wiz_0_synth_1/clk_wiz_0.dcp' has been generated. +INFO: [Vivado 12-24828] Executing command : report_utilization -file clk_wiz_0_utilization_synth.rpt -pb clk_wiz_0_utilization_synth.pb +INFO: [Common 17-206] Exiting Vivado at Wed Feb 26 11:54:28 2025... diff --git a/proj/AudioProc.runs/clk_wiz_0_synth_1/clk_wiz_0_utilization_synth.pb b/proj/AudioProc.runs/clk_wiz_0_synth_1/clk_wiz_0_utilization_synth.pb new file mode 100644 index 0000000000000000000000000000000000000000..cb1c83687cfae52aa803755d175323d25126deae GIT binary patch literal 276 zcmd;LGcqtT(KDRHtPxzAo10ivsgR$hP+F3ilUbEml9`_e;%28-Dioy_=a&{Grxxp- z<zZl8V3^CxP}J=4lo!N)D+D6<3NsWjd$fvx*u9b<@~$L9g^Bx8DG+<DJOe|6{a<;8 zhCb(`3cAZS+nrSfiO*GIXxQfbR1L)LH3E@$jTjg#U6vYy*lR5q7#2AEwP0Xia5`$q zz)<Bl$%?}%)Xm*FB*^Ei9mvSJ_6!UPj!(hlTNjX~y{;gURyPp4*BeCM^=4pba9HXC iVt?}Cbq@(}HHvrkaP;$Y^;sJT68#$pGV5p%hz$V0Fh)WE literal 0 HcmV?d00001 diff --git a/proj/AudioProc.runs/clk_wiz_0_synth_1/clk_wiz_0_utilization_synth.rpt b/proj/AudioProc.runs/clk_wiz_0_synth_1/clk_wiz_0_utilization_synth.rpt new file mode 100644 index 0000000..d002006 --- /dev/null +++ b/proj/AudioProc.runs/clk_wiz_0_synth_1/clk_wiz_0_utilization_synth.rpt @@ -0,0 +1,176 @@ +Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. +--------------------------------------------------------------------------------------------------------------------------------------------- +| Tool Version : Vivado v.2024.1 (lin64) Build 5076996 Wed May 22 18:36:09 MDT 2024 +| Date : Wed Feb 26 11:54:28 2025 +| Host : fl-tp-br-604 running 64-bit Ubuntu 24.04.1 LTS +| Command : report_utilization -file clk_wiz_0_utilization_synth.rpt -pb clk_wiz_0_utilization_synth.pb +| Design : clk_wiz_0 +| Device : xc7a200tsbg484-1 +| Speed File : -1 +| Design State : Synthesized +--------------------------------------------------------------------------------------------------------------------------------------------- + +Utilization Design Information + +Table of Contents +----------------- +1. Slice Logic +1.1 Summary of Registers by Type +2. Memory +3. DSP +4. IO and GT Specific +5. Clocking +6. Specific Feature +7. Primitives +8. Black Boxes +9. Instantiated Netlists + +1. Slice Logic +-------------- + ++-------------------------+------+-------+------------+-----------+-------+ +| Site Type | Used | Fixed | Prohibited | Available | Util% | ++-------------------------+------+-------+------------+-----------+-------+ +| Slice LUTs* | 0 | 0 | 0 | 134600 | 0.00 | +| LUT as Logic | 0 | 0 | 0 | 134600 | 0.00 | +| LUT as Memory | 0 | 0 | 0 | 46200 | 0.00 | +| Slice Registers | 0 | 0 | 0 | 269200 | 0.00 | +| Register as Flip Flop | 0 | 0 | 0 | 269200 | 0.00 | +| Register as Latch | 0 | 0 | 0 | 269200 | 0.00 | +| F7 Muxes | 0 | 0 | 0 | 67300 | 0.00 | +| F8 Muxes | 0 | 0 | 0 | 33650 | 0.00 | ++-------------------------+------+-------+------------+-----------+-------+ +* Warning! The Final LUT count, after physical optimizations and full implementation, is typically lower. Run opt_design after synthesis, if not already completed, for a more realistic count. +Warning! LUT value is adjusted to account for LUT combining. +Warning! For any ECO changes, please run place_design if there are unplaced instances + + +1.1 Summary of Registers by Type +-------------------------------- + ++-------+--------------+-------------+--------------+ +| Total | Clock Enable | Synchronous | Asynchronous | ++-------+--------------+-------------+--------------+ +| 0 | _ | - | - | +| 0 | _ | - | Set | +| 0 | _ | - | Reset | +| 0 | _ | Set | - | +| 0 | _ | Reset | - | +| 0 | Yes | - | - | +| 0 | Yes | - | Set | +| 0 | Yes | - | Reset | +| 0 | Yes | Set | - | +| 0 | Yes | Reset | - | ++-------+--------------+-------------+--------------+ + + +2. Memory +--------- + ++----------------+------+-------+------------+-----------+-------+ +| Site Type | Used | Fixed | Prohibited | Available | Util% | ++----------------+------+-------+------------+-----------+-------+ +| Block RAM Tile | 0 | 0 | 0 | 365 | 0.00 | +| RAMB36/FIFO* | 0 | 0 | 0 | 365 | 0.00 | +| RAMB18 | 0 | 0 | 0 | 730 | 0.00 | ++----------------+------+-------+------------+-----------+-------+ +* Note: Each Block RAM Tile only has one FIFO logic available and therefore can accommodate only one FIFO36E1 or one FIFO18E1. However, if a FIFO18E1 occupies a Block RAM Tile, that tile can still accommodate a RAMB18E1 + + +3. DSP +------ + ++-----------+------+-------+------------+-----------+-------+ +| Site Type | Used | Fixed | Prohibited | Available | Util% | ++-----------+------+-------+------------+-----------+-------+ +| DSPs | 0 | 0 | 0 | 740 | 0.00 | ++-----------+------+-------+------------+-----------+-------+ + + +4. IO and GT Specific +--------------------- + ++-----------------------------+------+-------+------------+-----------+-------+ +| Site Type | Used | Fixed | Prohibited | Available | Util% | ++-----------------------------+------+-------+------------+-----------+-------+ +| Bonded IOB | 1 | 0 | 0 | 285 | 0.35 | +| Bonded IPADs | 0 | 0 | 0 | 14 | 0.00 | +| Bonded OPADs | 0 | 0 | 0 | 8 | 0.00 | +| PHY_CONTROL | 0 | 0 | 0 | 10 | 0.00 | +| PHASER_REF | 0 | 0 | 0 | 10 | 0.00 | +| OUT_FIFO | 0 | 0 | 0 | 40 | 0.00 | +| IN_FIFO | 0 | 0 | 0 | 40 | 0.00 | +| IDELAYCTRL | 0 | 0 | 0 | 10 | 0.00 | +| IBUFDS | 0 | 0 | 0 | 274 | 0.00 | +| GTPE2_CHANNEL | 0 | 0 | 0 | 4 | 0.00 | +| PHASER_OUT/PHASER_OUT_PHY | 0 | 0 | 0 | 40 | 0.00 | +| PHASER_IN/PHASER_IN_PHY | 0 | 0 | 0 | 40 | 0.00 | +| IDELAYE2/IDELAYE2_FINEDELAY | 0 | 0 | 0 | 500 | 0.00 | +| IBUFDS_GTE2 | 0 | 0 | 0 | 2 | 0.00 | +| ILOGIC | 0 | 0 | 0 | 285 | 0.00 | +| OLOGIC | 0 | 0 | 0 | 285 | 0.00 | ++-----------------------------+------+-------+------------+-----------+-------+ + + +5. Clocking +----------- + ++------------+------+-------+------------+-----------+-------+ +| Site Type | Used | Fixed | Prohibited | Available | Util% | ++------------+------+-------+------------+-----------+-------+ +| BUFGCTRL | 5 | 0 | 0 | 32 | 15.63 | +| BUFIO | 0 | 0 | 0 | 40 | 0.00 | +| MMCME2_ADV | 1 | 0 | 0 | 10 | 10.00 | +| PLLE2_ADV | 0 | 0 | 0 | 10 | 0.00 | +| BUFMRCE | 0 | 0 | 0 | 20 | 0.00 | +| BUFHCE | 0 | 0 | 0 | 120 | 0.00 | +| BUFR | 0 | 0 | 0 | 40 | 0.00 | ++------------+------+-------+------------+-----------+-------+ + + +6. Specific Feature +------------------- + ++-------------+------+-------+------------+-----------+-------+ +| Site Type | Used | Fixed | Prohibited | Available | Util% | ++-------------+------+-------+------------+-----------+-------+ +| BSCANE2 | 0 | 0 | 0 | 4 | 0.00 | +| CAPTUREE2 | 0 | 0 | 0 | 1 | 0.00 | +| DNA_PORT | 0 | 0 | 0 | 1 | 0.00 | +| EFUSE_USR | 0 | 0 | 0 | 1 | 0.00 | +| FRAME_ECCE2 | 0 | 0 | 0 | 1 | 0.00 | +| ICAPE2 | 0 | 0 | 0 | 2 | 0.00 | +| PCIE_2_1 | 0 | 0 | 0 | 1 | 0.00 | +| STARTUPE2 | 0 | 0 | 0 | 1 | 0.00 | +| XADC | 0 | 0 | 0 | 1 | 0.00 | ++-------------+------+-------+------------+-----------+-------+ + + +7. Primitives +------------- + ++------------+------+---------------------+ +| Ref Name | Used | Functional Category | ++------------+------+---------------------+ +| BUFG | 5 | Clock | +| MMCME2_ADV | 1 | Clock | +| IBUF | 1 | IO | ++------------+------+---------------------+ + + +8. Black Boxes +-------------- + ++----------+------+ +| Ref Name | Used | ++----------+------+ + + +9. Instantiated Netlists +------------------------ + ++----------+------+ +| Ref Name | Used | ++----------+------+ + + diff --git a/proj/AudioProc.runs/clk_wiz_0_synth_1/dont_touch.xdc b/proj/AudioProc.runs/clk_wiz_0_synth_1/dont_touch.xdc new file mode 100644 index 0000000..e20d5ae --- /dev/null +++ b/proj/AudioProc.runs/clk_wiz_0_synth_1/dont_touch.xdc @@ -0,0 +1,32 @@ +# This file is automatically generated. +# It contains project source information necessary for synthesis and implementation. + +# IP: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0.xci +# IP: The module: 'clk_wiz_0' is the root of the design. Do not add the DONT_TOUCH constraint. + +# XDC: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0_board.xdc +# XDC: The top module name and the constraint reference have the same name: 'clk_wiz_0'. Do not add the DONT_TOUCH constraint. +set_property KEEP_HIERARCHY SOFT [get_cells inst -quiet] -quiet + +# XDC: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0.xdc +# XDC: The top module name and the constraint reference have the same name: 'clk_wiz_0'. Do not add the DONT_TOUCH constraint. +#dup# set_property KEEP_HIERARCHY SOFT [get_cells inst -quiet] -quiet + +# XDC: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0_ooc.xdc +# XDC: The top module name and the constraint reference have the same name: 'clk_wiz_0'. Do not add the DONT_TOUCH constraint. +#dup# set_property KEEP_HIERARCHY SOFT [get_cells inst -quiet] -quiet + +# IP: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0.xci +# IP: The module: 'clk_wiz_0' is the root of the design. Do not add the DONT_TOUCH constraint. + +# XDC: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0_board.xdc +# XDC: The top module name and the constraint reference have the same name: 'clk_wiz_0'. Do not add the DONT_TOUCH constraint. +#dup# set_property KEEP_HIERARCHY SOFT [get_cells inst -quiet] -quiet + +# XDC: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0.xdc +# XDC: The top module name and the constraint reference have the same name: 'clk_wiz_0'. Do not add the DONT_TOUCH constraint. +#dup# set_property KEEP_HIERARCHY SOFT [get_cells inst -quiet] -quiet + +# XDC: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0_ooc.xdc +# XDC: The top module name and the constraint reference have the same name: 'clk_wiz_0'. Do not add the DONT_TOUCH constraint. +#dup# set_property KEEP_HIERARCHY SOFT [get_cells inst -quiet] -quiet diff --git a/proj/AudioProc.runs/clk_wiz_0_synth_1/gen_run.xml b/proj/AudioProc.runs/clk_wiz_0_synth_1/gen_run.xml new file mode 100644 index 0000000..7133487 --- /dev/null +++ b/proj/AudioProc.runs/clk_wiz_0_synth_1/gen_run.xml @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="UTF-8"?> +<GenRun Id="clk_wiz_0_synth_1" LaunchPart="xc7a200tsbg484-1" LaunchTime="1740567182"> + <File Type="VDS-TIMINGSUMMARY" Name="clk_wiz_0_timing_summary_synth.rpt"/> + <File Type="RDS-DCP" Name="clk_wiz_0.dcp"/> + <File Type="RDS-UTIL-PB" Name="clk_wiz_0_utilization_synth.pb"/> + <File Type="RDS-UTIL" Name="clk_wiz_0_utilization_synth.rpt"/> + <File Type="VDS-TIMING-PB" Name="clk_wiz_0_timing_summary_synth.pb"/> + <File Type="PA-TCL" Name="clk_wiz_0.tcl"/> + <File Type="REPORTS-TCL" Name="clk_wiz_0_reports.tcl"/> + <File Type="RDS-RDS" Name="clk_wiz_0.vds"/> + <File Type="RDS-PROPCONSTRS" Name="clk_wiz_0_drc_synth.rpt"/> + <FileSet Name="sources" Type="BlockSrcs" RelSrcDir="$PSRCDIR/clk_wiz_0" RelGenDir="$PGENDIR/clk_wiz_0"> + <File Path="$PPRDIR/../src/ip/clk_wiz_0/clk_wiz_0.xci"> + <FileInfo> + <Attr Name="UsedIn" Val="synthesis"/> + <Attr Name="UsedIn" Val="implementation"/> + <Attr Name="UsedIn" Val="simulation"/> + </FileInfo> + </File> + <Config> + <Option Name="TopModule" Val="clk_wiz_0"/> + <Option Name="UseBlackboxStub" Val="1"/> + </Config> + </FileSet> + <FileSet Name="constrs_in" Type="BlockSrcs" RelSrcDir="$PSRCDIR/clk_wiz_0" RelGenDir="$PGENDIR/clk_wiz_0"> + <File Path="$PPRDIR/../src/ip/clk_wiz_0/clk_wiz_0.xci"> + <FileInfo> + <Attr Name="UsedIn" Val="synthesis"/> + <Attr Name="UsedIn" Val="implementation"/> + <Attr Name="UsedIn" Val="simulation"/> + </FileInfo> + </File> + <Config> + <Option Name="TopModule" Val="clk_wiz_0"/> + <Option Name="UseBlackboxStub" Val="1"/> + </Config> + </FileSet> + <FileSet Name="utils" Type="Utils" RelSrcDir="$PSRCDIR/utils_1" RelGenDir="$PGENDIR/utils_1"> + <Filter Type="Utils"/> + <Config> + <Option Name="TopAutoSet" Val="TRUE"/> + </Config> + </FileSet> + <Strategy Version="1" Minor="2"> + <StratHandle Name="Vivado Synthesis Defaults" Flow="Vivado Synthesis 2024"> + <Desc>Vivado Synthesis Defaults</Desc> + </StratHandle> + <Step Id="synth_design"/> + </Strategy> +</GenRun> diff --git a/proj/AudioProc.runs/clk_wiz_0_synth_1/htr.txt b/proj/AudioProc.runs/clk_wiz_0_synth_1/htr.txt new file mode 100644 index 0000000..94a0b3d --- /dev/null +++ b/proj/AudioProc.runs/clk_wiz_0_synth_1/htr.txt @@ -0,0 +1,10 @@ +# +# Vivado(TM) +# htr.txt: a Vivado-generated description of how-to-repeat the +# the basic steps of a run. Note that runme.bat/sh needs +# to be invoked for Vivado to track run status. +# Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. +# Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. +# + +vivado -log clk_wiz_0.vds -m64 -product Vivado -mode batch -messageDb vivado.pb -notrace -source clk_wiz_0.tcl diff --git a/proj/AudioProc.runs/clk_wiz_0_synth_1/project.wdf b/proj/AudioProc.runs/clk_wiz_0_synth_1/project.wdf new file mode 100644 index 0000000..e347b49 --- /dev/null +++ b/proj/AudioProc.runs/clk_wiz_0_synth_1/project.wdf @@ -0,0 +1,32 @@ +version:1 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:737263736574636f756e74:3131:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:636f6e73747261696e74736574636f756e74:31:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:64657369676e6d6f6465:52544c:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:73796e7468657369737374726174656779:466c6f775f506572664f7074696d697a65645f48696768:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:696d706c7374726174656779:56697661646f20496d706c656d656e746174696f6e2044656661756c7473:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:63757272656e7473796e74686573697372756e:73796e74685f31:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:63757272656e74696d706c72756e:696d706c5f31:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:746f74616c73796e74686573697372756e73:32:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:746f74616c696d706c72756e73:32:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:636f72655f636f6e7461696e6572:66616c7365:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:73696d756c61746f725f6c616e6775616765:4d69786564:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:7461726765745f6c616e6775616765:5648444c:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:64656661756c745f6c696272617279:78696c5f64656661756c746c6962:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:7461726765745f73696d756c61746f72:5853696d:00:00 +70726f6a656374:69705f636f72655f636f6e7461696e65725c636c6b5f77697a5f76365f305f31345c636c6b5f77697a5f30:636f72655f636f6e7461696e6572:66616c7365:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f7873696d:30:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f6d6f64656c73696d:30:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f717565737461:30:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f696573:30:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f766373:30:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f72697669657261:30:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f61637469766568646c:30:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f7873696d:30:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f6d6f64656c73696d:30:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f717565737461:30:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f696573:30:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f766373:30:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f72697669657261:30:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f61637469766568646c:30:00:00 +5f5f48494444454e5f5f:5f5f48494444454e5f5f:50726f6a65637455554944:3430316638303238363638613434623761383162376161656563363734373430:506172656e742050412070726f6a656374204944:00 +eof:14405968 diff --git a/proj/AudioProc.runs/clk_wiz_0_synth_1/rundef.js b/proj/AudioProc.runs/clk_wiz_0_synth_1/rundef.js new file mode 100644 index 0000000..d930527 --- /dev/null +++ b/proj/AudioProc.runs/clk_wiz_0_synth_1/rundef.js @@ -0,0 +1,41 @@ +// +// Vivado(TM) +// rundef.js: a Vivado-generated Runs Script for WSH 5.1/5.6 +// Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. +// Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. +// + +echo "This script was generated under a different operating system." +echo "Please update the PATH variable below, before executing this script" +exit + +var WshShell = new ActiveXObject( "WScript.Shell" ); +var ProcEnv = WshShell.Environment( "Process" ); +var PathVal = ProcEnv("PATH"); +if ( PathVal.length == 0 ) { + PathVal = "/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vitis/2024.1/bin:/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/ids_lite/ISE/bin/lin64;/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/bin;"; +} else { + PathVal = "/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vitis/2024.1/bin:/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/ids_lite/ISE/bin/lin64;/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/bin;" + PathVal; +} + +ProcEnv("PATH") = PathVal; + +var RDScrFP = WScript.ScriptFullName; +var RDScrN = WScript.ScriptName; +var RDScrDir = RDScrFP.substr( 0, RDScrFP.length - RDScrN.length - 1 ); +var ISEJScriptLib = RDScrDir + "/ISEWrap.js"; +eval( EAInclude(ISEJScriptLib) ); + + +ISEStep( "vivado", + "-log clk_wiz_0.vds -m64 -product Vivado -mode batch -messageDb vivado.pb -notrace -source clk_wiz_0.tcl" ); + + + +function EAInclude( EAInclFilename ) { + var EAFso = new ActiveXObject( "Scripting.FileSystemObject" ); + var EAInclFile = EAFso.OpenTextFile( EAInclFilename ); + var EAIFContents = EAInclFile.ReadAll(); + EAInclFile.Close(); + return EAIFContents; +} diff --git a/proj/AudioProc.runs/clk_wiz_0_synth_1/runme.bat b/proj/AudioProc.runs/clk_wiz_0_synth_1/runme.bat new file mode 100644 index 0000000..637899f --- /dev/null +++ b/proj/AudioProc.runs/clk_wiz_0_synth_1/runme.bat @@ -0,0 +1,12 @@ +@echo off + +rem Vivado (TM) +rem runme.bat: a Vivado-generated Script +rem Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. +rem Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. + + +set HD_SDIR=%~dp0 +cd /d "%HD_SDIR%" +set PATH=%SYSTEMROOT%\system32;%PATH% +cscript /nologo /E:JScript "%HD_SDIR%\rundef.js" %* diff --git a/proj/AudioProc.runs/clk_wiz_0_synth_1/runme.log b/proj/AudioProc.runs/clk_wiz_0_synth_1/runme.log new file mode 100644 index 0000000..66e639b --- /dev/null +++ b/proj/AudioProc.runs/clk_wiz_0_synth_1/runme.log @@ -0,0 +1,262 @@ + +*** Running vivado + with args -log clk_wiz_0.vds -m64 -product Vivado -mode batch -messageDb vivado.pb -notrace -source clk_wiz_0.tcl + + +****** Vivado v2024.1 (64-bit) + **** SW Build 5076996 on Wed May 22 18:36:09 MDT 2024 + **** IP Build 5075265 on Wed May 22 21:45:21 MDT 2024 + **** SharedData Build 5076995 on Wed May 22 18:29:18 MDT 2024 + **** Start of session at: Wed Feb 26 11:53:05 2025 + ** Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. + ** Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. + +source clk_wiz_0.tcl -notrace +create_project: Time (s): cpu = 00:00:13 ; elapsed = 00:00:26 . Memory (MB): peak = 1680.684 ; gain = 327.840 ; free physical = 5579 ; free virtual = 14118 +INFO: [IP_Flow 19-234] Refreshing IP repositories +WARNING: [IP_Flow 19-2248] Failed to load user IP repository '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/repo'; Can't find the specified path. +If this directory should no longer be in your list of user repositories, go to the IP Settings dialog and remove it. +INFO: [IP_Flow 19-2313] Loaded Vivado IP repository '/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/ip'. +INFO: [IP_Flow 19-6924] IPCACHE: Running cache check for IP inst: clk_wiz_0 +Command: synth_design -top clk_wiz_0 -part xc7a200tsbg484-1 -incremental_mode off -mode out_of_context +Starting synth_design +Attempting to get a license for feature 'Synthesis' and/or device 'xc7a200t' +INFO: [Common 17-349] Got license for feature 'Synthesis' and/or device 'xc7a200t' +INFO: [Device 21-403] Loading part xc7a200tsbg484-1 +INFO: [Device 21-9227] Part: xc7a200tsbg484-1 does not have CEAM library. +INFO: [Synth 8-7079] Multithreading enabled for synth_design using a maximum of 4 processes. +INFO: [Synth 8-7078] Launching helper process for spawning children vivado processes +INFO: [Synth 8-7075] Helper process launched with PID 37082 +--------------------------------------------------------------------------------- +Starting RTL Elaboration : Time (s): cpu = 00:00:03 ; elapsed = 00:00:05 . Memory (MB): peak = 2501.867 ; gain = 420.523 ; free physical = 4412 ; free virtual = 12955 +--------------------------------------------------------------------------------- +INFO: [Synth 8-6157] synthesizing module 'clk_wiz_0' [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0.v:68] +INFO: [Synth 8-6157] synthesizing module 'clk_wiz_0_clk_wiz' [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0_clk_wiz.v:68] +INFO: [Synth 8-6157] synthesizing module 'IBUF' [/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/scripts/rt/data/unisim_comp.v:73643] +INFO: [Synth 8-6155] done synthesizing module 'IBUF' (0#1) [/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/scripts/rt/data/unisim_comp.v:73643] +INFO: [Synth 8-6157] synthesizing module 'MMCME2_ADV' [/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/scripts/rt/data/unisim_comp.v:82388] + Parameter BANDWIDTH bound to: OPTIMIZED - type: string + Parameter CLKFBOUT_MULT_F bound to: 6.000000 - type: double + Parameter CLKFBOUT_PHASE bound to: 0.000000 - type: double + Parameter CLKFBOUT_USE_FINE_PS bound to: FALSE - type: string + Parameter CLKIN1_PERIOD bound to: 10.000000 - type: double + Parameter CLKOUT0_DIVIDE_F bound to: 6.000000 - type: double + Parameter CLKOUT0_DUTY_CYCLE bound to: 0.500000 - type: double + Parameter CLKOUT0_PHASE bound to: 0.000000 - type: double + Parameter CLKOUT0_USE_FINE_PS bound to: FALSE - type: string + Parameter CLKOUT1_DIVIDE bound to: 3 - type: integer + Parameter CLKOUT1_DUTY_CYCLE bound to: 0.500000 - type: double + Parameter CLKOUT1_PHASE bound to: 0.000000 - type: double + Parameter CLKOUT1_USE_FINE_PS bound to: FALSE - type: string + Parameter CLKOUT2_DIVIDE bound to: 50 - type: integer + Parameter CLKOUT2_DUTY_CYCLE bound to: 0.500000 - type: double + Parameter CLKOUT2_PHASE bound to: 0.000000 - type: double + Parameter CLKOUT2_USE_FINE_PS bound to: FALSE - type: string + Parameter CLKOUT3_DIVIDE bound to: 12 - type: integer + Parameter CLKOUT3_DUTY_CYCLE bound to: 0.500000 - type: double + Parameter CLKOUT3_PHASE bound to: 0.000000 - type: double + Parameter CLKOUT3_USE_FINE_PS bound to: FALSE - type: string + Parameter CLKOUT4_CASCADE bound to: FALSE - type: string + Parameter COMPENSATION bound to: ZHOLD - type: string + Parameter DIVCLK_DIVIDE bound to: 1 - type: integer + Parameter STARTUP_WAIT bound to: FALSE - type: string +INFO: [Synth 8-6155] done synthesizing module 'MMCME2_ADV' (0#1) [/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/scripts/rt/data/unisim_comp.v:82388] +INFO: [Synth 8-6157] synthesizing module 'BUFG' [/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/scripts/rt/data/unisim_comp.v:1951] +INFO: [Synth 8-6155] done synthesizing module 'BUFG' (0#1) [/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/scripts/rt/data/unisim_comp.v:1951] +INFO: [Synth 8-6155] done synthesizing module 'clk_wiz_0_clk_wiz' (0#1) [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0_clk_wiz.v:68] +INFO: [Synth 8-6155] done synthesizing module 'clk_wiz_0' (0#1) [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0.v:68] +--------------------------------------------------------------------------------- +Finished RTL Elaboration : Time (s): cpu = 00:00:04 ; elapsed = 00:00:06 . Memory (MB): peak = 2578.805 ; gain = 497.461 ; free physical = 4294 ; free virtual = 12848 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Handling Custom Attributes +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Handling Custom Attributes : Time (s): cpu = 00:00:04 ; elapsed = 00:00:06 . Memory (MB): peak = 2596.617 ; gain = 515.273 ; free physical = 4291 ; free virtual = 12849 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished RTL Optimization Phase 1 : Time (s): cpu = 00:00:04 ; elapsed = 00:00:06 . Memory (MB): peak = 2596.617 ; gain = 515.273 ; free physical = 4291 ; free virtual = 12849 +--------------------------------------------------------------------------------- +Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 2602.555 ; gain = 0.000 ; free physical = 4291 ; free virtual = 12849 +INFO: [Netlist 29-17] Analyzing 1 Unisim elements for replacement +INFO: [Netlist 29-28] Unisim Transformation completed in 0 CPU seconds +INFO: [Project 1-570] Preparing netlist for logic optimization + +Processing XDC Constraints +Initializing timing engine +Parsing XDC File [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0_ooc.xdc] for cell 'inst' +Finished Parsing XDC File [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0_ooc.xdc] for cell 'inst' +Parsing XDC File [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0_board.xdc] for cell 'inst' +Finished Parsing XDC File [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0_board.xdc] for cell 'inst' +Parsing XDC File [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0.xdc] for cell 'inst' +Finished Parsing XDC File [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0.xdc] for cell 'inst' +INFO: [Project 1-236] Implementation specific constraints were found while reading constraint file [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0.xdc]. These constraints will be ignored for synthesis but will be used in implementation. Impacted constraints are listed in the file [.Xil/clk_wiz_0_propImpl.xdc]. +Resolution: To avoid this warning, move constraints listed in [.Xil/clk_wiz_0_propImpl.xdc] to another XDC file and exclude this new file from synthesis with the used_in_synthesis property (File Properties dialog in GUI) and re-run elaboration/synthesis. +INFO: [Timing 38-2] Deriving generated clocks +Parsing XDC File [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.runs/clk_wiz_0_synth_1/dont_touch.xdc] +Finished Parsing XDC File [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.runs/clk_wiz_0_synth_1/dont_touch.xdc] +Completed Processing XDC Constraints + +Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 2669.555 ; gain = 0.000 ; free physical = 4268 ; free virtual = 12827 +INFO: [Project 1-111] Unisim Transformation Summary: +No Unisim elements were transformed. + +Constraint Validation Runtime : Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.05 . Memory (MB): peak = 2669.555 ; gain = 0.000 ; free physical = 4268 ; free virtual = 12827 +INFO: [Designutils 20-5008] Incremental synthesis strategy off +--------------------------------------------------------------------------------- +Finished Constraint Validation : Time (s): cpu = 00:00:10 ; elapsed = 00:00:15 . Memory (MB): peak = 2669.555 ; gain = 588.211 ; free physical = 4286 ; free virtual = 12848 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Loading Part and Timing Information +--------------------------------------------------------------------------------- +Loading part: xc7a200tsbg484-1 +--------------------------------------------------------------------------------- +Finished Loading Part and Timing Information : Time (s): cpu = 00:00:10 ; elapsed = 00:00:15 . Memory (MB): peak = 2677.559 ; gain = 596.215 ; free physical = 4286 ; free virtual = 12848 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Applying 'set_property' XDC Constraints +--------------------------------------------------------------------------------- +Applied set_property KEEP_HIERARCHY = SOFT for inst. (constraint file /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.runs/clk_wiz_0_synth_1/dont_touch.xdc, line 9). +--------------------------------------------------------------------------------- +Finished applying 'set_property' XDC Constraints : Time (s): cpu = 00:00:10 ; elapsed = 00:00:15 . Memory (MB): peak = 2677.559 ; gain = 596.215 ; free physical = 4300 ; free virtual = 12861 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished RTL Optimization Phase 2 : Time (s): cpu = 00:00:10 ; elapsed = 00:00:15 . Memory (MB): peak = 2677.559 ; gain = 596.215 ; free physical = 4298 ; free virtual = 12862 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start RTL Component Statistics +--------------------------------------------------------------------------------- +Detailed RTL Component Info : +--------------------------------------------------------------------------------- +Finished RTL Component Statistics +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Part Resource Summary +--------------------------------------------------------------------------------- +Part Resources: +DSPs: 740 (col length:100) +BRAMs: 730 (col length: RAMB18 100 RAMB36 50) +--------------------------------------------------------------------------------- +Finished Part Resource Summary +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Cross Boundary and Area Optimization +--------------------------------------------------------------------------------- +WARNING: [Synth 8-7080] Parallel synthesis criteria is not met +--------------------------------------------------------------------------------- +Finished Cross Boundary and Area Optimization : Time (s): cpu = 00:00:11 ; elapsed = 00:00:16 . Memory (MB): peak = 2677.559 ; gain = 596.215 ; free physical = 4299 ; free virtual = 12862 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Applying XDC Timing Constraints +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Applying XDC Timing Constraints : Time (s): cpu = 00:00:16 ; elapsed = 00:00:22 . Memory (MB): peak = 2677.559 ; gain = 596.215 ; free physical = 4288 ; free virtual = 12863 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Timing Optimization +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Timing Optimization : Time (s): cpu = 00:00:16 ; elapsed = 00:00:22 . Memory (MB): peak = 2677.559 ; gain = 596.215 ; free physical = 4288 ; free virtual = 12863 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Technology Mapping +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Technology Mapping : Time (s): cpu = 00:00:16 ; elapsed = 00:00:22 . Memory (MB): peak = 2677.559 ; gain = 596.215 ; free physical = 4287 ; free virtual = 12863 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start IO Insertion +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Flattening Before IO Insertion +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Flattening Before IO Insertion +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Final Netlist Cleanup +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Final Netlist Cleanup +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished IO Insertion : Time (s): cpu = 00:00:19 ; elapsed = 00:00:25 . Memory (MB): peak = 2677.559 ; gain = 596.215 ; free physical = 4289 ; free virtual = 12865 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Renaming Generated Instances +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Renaming Generated Instances : Time (s): cpu = 00:00:19 ; elapsed = 00:00:25 . Memory (MB): peak = 2677.559 ; gain = 596.215 ; free physical = 4289 ; free virtual = 12865 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Rebuilding User Hierarchy +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Rebuilding User Hierarchy : Time (s): cpu = 00:00:19 ; elapsed = 00:00:25 . Memory (MB): peak = 2677.559 ; gain = 596.215 ; free physical = 4289 ; free virtual = 12865 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Renaming Generated Ports +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Renaming Generated Ports : Time (s): cpu = 00:00:19 ; elapsed = 00:00:25 . Memory (MB): peak = 2677.559 ; gain = 596.215 ; free physical = 4289 ; free virtual = 12865 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Handling Custom Attributes +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Handling Custom Attributes : Time (s): cpu = 00:00:19 ; elapsed = 00:00:25 . Memory (MB): peak = 2677.559 ; gain = 596.215 ; free physical = 4289 ; free virtual = 12865 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Renaming Generated Nets +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Renaming Generated Nets : Time (s): cpu = 00:00:19 ; elapsed = 00:00:25 . Memory (MB): peak = 2677.559 ; gain = 596.215 ; free physical = 4289 ; free virtual = 12865 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Writing Synthesis Report +--------------------------------------------------------------------------------- + +Report BlackBoxes: ++-+--------------+----------+ +| |BlackBox name |Instances | ++-+--------------+----------+ ++-+--------------+----------+ + +Report Cell Usage: ++------+-----------+------+ +| |Cell |Count | ++------+-----------+------+ +|1 |BUFG | 5| +|2 |MMCME2_ADV | 1| +|3 |IBUF | 1| ++------+-----------+------+ +--------------------------------------------------------------------------------- +Finished Writing Synthesis Report : Time (s): cpu = 00:00:19 ; elapsed = 00:00:25 . Memory (MB): peak = 2677.559 ; gain = 596.215 ; free physical = 4289 ; free virtual = 12865 +--------------------------------------------------------------------------------- +Synthesis finished with 0 errors, 0 critical warnings and 1 warnings. +Synthesis Optimization Runtime : Time (s): cpu = 00:00:17 ; elapsed = 00:00:21 . Memory (MB): peak = 2677.559 ; gain = 523.277 ; free physical = 4277 ; free virtual = 12864 +Synthesis Optimization Complete : Time (s): cpu = 00:00:19 ; elapsed = 00:00:25 . Memory (MB): peak = 2677.566 ; gain = 596.215 ; free physical = 4277 ; free virtual = 12864 +INFO: [Project 1-571] Translating synthesized netlist +Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 2677.566 ; gain = 0.000 ; free physical = 4277 ; free virtual = 12864 +INFO: [Netlist 29-17] Analyzing 1 Unisim elements for replacement +INFO: [Netlist 29-28] Unisim Transformation completed in 0 CPU seconds +INFO: [Project 1-570] Preparing netlist for logic optimization +INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s). +Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 2677.566 ; gain = 0.000 ; free physical = 4553 ; free virtual = 13141 +INFO: [Project 1-111] Unisim Transformation Summary: +No Unisim elements were transformed. + +Synth Design complete | Checksum: 2bb42201 +INFO: [Common 17-83] Releasing license: Synthesis +33 Infos, 2 Warnings, 0 Critical Warnings and 0 Errors encountered. +synth_design completed successfully +synth_design: Time (s): cpu = 00:00:25 ; elapsed = 00:00:37 . Memory (MB): peak = 2677.566 ; gain = 981.039 ; free physical = 4553 ; free virtual = 13141 +INFO: [Common 17-2834] synth_design peak Physical Memory [PSS] (MB): overall = 2253.438; main = 1881.028; forked = 419.174 +INFO: [Common 17-2834] synth_design peak Virtual Memory [VSS] (MB): overall = 3782.270; main = 2677.562; forked = 1104.707 +Write ShapeDB Complete: Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 2701.570 ; gain = 0.000 ; free physical = 4580 ; free virtual = 13168 +INFO: [Common 17-1381] The checkpoint '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.runs/clk_wiz_0_synth_1/clk_wiz_0.dcp' has been generated. +INFO: [Coretcl 2-1648] Added synthesis output to IP cache for IP clk_wiz_0, cache-ID = 0edd54b7fee8338b +Write ShapeDB Complete: Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 2757.598 ; gain = 0.000 ; free physical = 4578 ; free virtual = 13170 +INFO: [Common 17-1381] The checkpoint '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.runs/clk_wiz_0_synth_1/clk_wiz_0.dcp' has been generated. +INFO: [Vivado 12-24828] Executing command : report_utilization -file clk_wiz_0_utilization_synth.rpt -pb clk_wiz_0_utilization_synth.pb +INFO: [Common 17-206] Exiting Vivado at Wed Feb 26 11:54:28 2025... diff --git a/proj/AudioProc.runs/clk_wiz_0_synth_1/runme.sh b/proj/AudioProc.runs/clk_wiz_0_synth_1/runme.sh new file mode 100755 index 0000000..e2b3f0f --- /dev/null +++ b/proj/AudioProc.runs/clk_wiz_0_synth_1/runme.sh @@ -0,0 +1,40 @@ +#!/bin/sh + +# +# Vivado(TM) +# runme.sh: a Vivado-generated Runs Script for UNIX +# Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. +# Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. +# + +if [ -z "$PATH" ]; then + PATH=/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vitis/2024.1/bin:/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/ids_lite/ISE/bin/lin64:/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/bin +else + PATH=/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vitis/2024.1/bin:/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/ids_lite/ISE/bin/lin64:/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/bin:$PATH +fi +export PATH + +if [ -z "$LD_LIBRARY_PATH" ]; then + LD_LIBRARY_PATH= +else + LD_LIBRARY_PATH=:$LD_LIBRARY_PATH +fi +export LD_LIBRARY_PATH + +HD_PWD='/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.runs/clk_wiz_0_synth_1' +cd "$HD_PWD" + +HD_LOG=runme.log +/bin/touch $HD_LOG + +ISEStep="./ISEWrap.sh" +EAStep() +{ + $ISEStep $HD_LOG "$@" >> $HD_LOG 2>&1 + if [ $? -ne 0 ] + then + exit + fi +} + +EAStep vivado -log clk_wiz_0.vds -m64 -product Vivado -mode batch -messageDb vivado.pb -notrace -source clk_wiz_0.tcl diff --git a/proj/AudioProc.runs/clk_wiz_0_synth_1/vivado.jou b/proj/AudioProc.runs/clk_wiz_0_synth_1/vivado.jou new file mode 100644 index 0000000..a97cbf1 --- /dev/null +++ b/proj/AudioProc.runs/clk_wiz_0_synth_1/vivado.jou @@ -0,0 +1,24 @@ +#----------------------------------------------------------- +# Vivado v2024.1 (64-bit) +# SW Build 5076996 on Wed May 22 18:36:09 MDT 2024 +# IP Build 5075265 on Wed May 22 21:45:21 MDT 2024 +# SharedData Build 5076995 on Wed May 22 18:29:18 MDT 2024 +# Start of session at: Wed Feb 26 11:53:05 2025 +# Process ID: 36861 +# Current directory: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.runs/clk_wiz_0_synth_1 +# Command line: vivado -log clk_wiz_0.vds -product Vivado -mode batch -messageDb vivado.pb -notrace -source clk_wiz_0.tcl +# Log file: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.runs/clk_wiz_0_synth_1/clk_wiz_0.vds +# Journal file: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.runs/clk_wiz_0_synth_1/vivado.jou +# Running On :fl-tp-br-604 +# Platform :Ubuntu +# Operating System :Ubuntu 24.04.1 LTS +# Processor Detail :Intel(R) Core(TM) i5-10500 CPU @ 3.10GHz +# CPU Frequency :4248.581 MHz +# CPU Physical cores:6 +# CPU Logical cores :12 +# Host memory :16467 MB +# Swap memory :4294 MB +# Total Virtual :20762 MB +# Available Virtual :15254 MB +#----------------------------------------------------------- +source clk_wiz_0.tcl -notrace diff --git a/proj/AudioProc.runs/clk_wiz_0_synth_1/vivado.pb b/proj/AudioProc.runs/clk_wiz_0_synth_1/vivado.pb new file mode 100644 index 0000000000000000000000000000000000000000..6b889654010e2ae0aa7e990d30814159968f559b GIT binary patch literal 28572 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 Xpd4Yu$HnEEm!c4qnw(#hBESd$Dmexy literal 0 HcmV?d00001 diff --git a/proj/AudioProc.sim/sim_1/behav/xsim/compile.sh b/proj/AudioProc.sim/sim_1/behav/xsim/compile.sh new file mode 100755 index 0000000..15435ca --- /dev/null +++ b/proj/AudioProc.sim/sim_1/behav/xsim/compile.sh @@ -0,0 +1,28 @@ +#!/usr/bin/env bash +# **************************************************************************** +# Vivado (TM) v2024.1 (64-bit) +# +# Filename : compile.sh +# Simulator : AMD Vivado Simulator +# Description : Script for compiling the simulation design source files +# +# Generated by Vivado on Wed Feb 26 12:25:18 CET 2025 +# SW Build 5076996 on Wed May 22 18:36:09 MDT 2024 +# +# Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. +# Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. +# +# usage: compile.sh +# +# **************************************************************************** +set -Eeuo pipefail +# compile Verilog/System Verilog design sources +echo "xvlog --incr --relax -prj tb_firUnit_vlog.prj" +xvlog --incr --relax -prj tb_firUnit_vlog.prj 2>&1 | tee compile.log + +# compile VHDL design sources +echo "xvhdl --incr --relax -prj tb_firUnit_vhdl.prj" +xvhdl --incr --relax -prj tb_firUnit_vhdl.prj 2>&1 | tee -a compile.log + +echo "Waiting for jobs to finish..." +echo "No pending jobs, compilation finished." diff --git a/proj/AudioProc.sim/sim_1/behav/xsim/elaborate.log b/proj/AudioProc.sim/sim_1/behav/xsim/elaborate.log new file mode 100644 index 0000000..43f9ab9 --- /dev/null +++ b/proj/AudioProc.sim/sim_1/behav/xsim/elaborate.log @@ -0,0 +1,21 @@ +Vivado Simulator v2024.1 +Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. +Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. +Running: /usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/bin/unwrapped/lnx64.o/xelab --incr --debug typical --relax --mt 8 -L xil_defaultlib -L unisims_ver -L unimacro_ver -L secureip -L xpm --snapshot tb_firUnit_behav xil_defaultlib.tb_firUnit xil_defaultlib.glbl -log elaborate.log +Using 8 slave threads. +Starting static elaboration +Pass Through NonSizing Optimizer +Completed static elaboration +Starting simulation data flow analysis +Completed simulation data flow analysis +Time Resolution for simulation is 1ps +Compiling package std.standard +Compiling package std.textio +Compiling package ieee.std_logic_1164 +Compiling package ieee.numeric_std +Compiling module xil_defaultlib.glbl +Compiling architecture archi_operativeunit of entity xil_defaultlib.controlUnit [controlunit_default] +Compiling architecture arch_operativeunit of entity xil_defaultlib.operativeUnit [operativeunit_default] +Compiling architecture archi_firunit of entity xil_defaultlib.firUnit [firunit_default] +Compiling architecture archi_tb_firunit of entity xil_defaultlib.tb_firunit +Built simulation snapshot tb_firUnit_behav diff --git a/proj/AudioProc.sim/sim_1/behav/xsim/elaborate.sh b/proj/AudioProc.sim/sim_1/behav/xsim/elaborate.sh new file mode 100755 index 0000000..629e137 --- /dev/null +++ b/proj/AudioProc.sim/sim_1/behav/xsim/elaborate.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash +# **************************************************************************** +# Vivado (TM) v2024.1 (64-bit) +# +# Filename : elaborate.sh +# Simulator : AMD Vivado Simulator +# Description : Script for elaborating the compiled design +# +# Generated by Vivado on Wed Feb 26 12:25:21 CET 2025 +# SW Build 5076996 on Wed May 22 18:36:09 MDT 2024 +# +# Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. +# Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. +# +# usage: elaborate.sh +# +# **************************************************************************** +set -Eeuo pipefail +# elaborate design +echo "xelab --incr --debug typical --relax --mt 8 -L xil_defaultlib -L unisims_ver -L unimacro_ver -L secureip -L xpm --snapshot tb_firUnit_behav xil_defaultlib.tb_firUnit xil_defaultlib.glbl -log elaborate.log" +xelab --incr --debug typical --relax --mt 8 -L xil_defaultlib -L unisims_ver -L unimacro_ver -L secureip -L xpm --snapshot tb_firUnit_behav xil_defaultlib.tb_firUnit xil_defaultlib.glbl -log elaborate.log + diff --git a/proj/AudioProc.sim/sim_1/behav/xsim/glbl.v b/proj/AudioProc.sim/sim_1/behav/xsim/glbl.v new file mode 100755 index 0000000..ed3b249 --- /dev/null +++ b/proj/AudioProc.sim/sim_1/behav/xsim/glbl.v @@ -0,0 +1,84 @@ +// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $ +`ifndef GLBL +`define GLBL +`timescale 1 ps / 1 ps + +module glbl (); + + parameter ROC_WIDTH = 100000; + parameter TOC_WIDTH = 0; + parameter GRES_WIDTH = 10000; + parameter GRES_START = 10000; + +//-------- STARTUP Globals -------------- + wire GSR; + wire GTS; + wire GWE; + wire PRLD; + wire GRESTORE; + tri1 p_up_tmp; + tri (weak1, strong0) PLL_LOCKG = p_up_tmp; + + wire PROGB_GLBL; + wire CCLKO_GLBL; + wire FCSBO_GLBL; + wire [3:0] DO_GLBL; + wire [3:0] DI_GLBL; + + reg GSR_int; + reg GTS_int; + reg PRLD_int; + reg GRESTORE_int; + +//-------- JTAG Globals -------------- + wire JTAG_TDO_GLBL; + wire JTAG_TCK_GLBL; + wire JTAG_TDI_GLBL; + wire JTAG_TMS_GLBL; + wire JTAG_TRST_GLBL; + + reg JTAG_CAPTURE_GLBL; + reg JTAG_RESET_GLBL; + reg JTAG_SHIFT_GLBL; + reg JTAG_UPDATE_GLBL; + reg JTAG_RUNTEST_GLBL; + + reg JTAG_SEL1_GLBL = 0; + reg JTAG_SEL2_GLBL = 0 ; + reg JTAG_SEL3_GLBL = 0; + reg JTAG_SEL4_GLBL = 0; + + reg JTAG_USER_TDO1_GLBL = 1'bz; + reg JTAG_USER_TDO2_GLBL = 1'bz; + reg JTAG_USER_TDO3_GLBL = 1'bz; + reg JTAG_USER_TDO4_GLBL = 1'bz; + + assign (strong1, weak0) GSR = GSR_int; + assign (strong1, weak0) GTS = GTS_int; + assign (weak1, weak0) PRLD = PRLD_int; + assign (strong1, weak0) GRESTORE = GRESTORE_int; + + initial begin + GSR_int = 1'b1; + PRLD_int = 1'b1; + #(ROC_WIDTH) + GSR_int = 1'b0; + PRLD_int = 1'b0; + end + + initial begin + GTS_int = 1'b1; + #(TOC_WIDTH) + GTS_int = 1'b0; + end + + initial begin + GRESTORE_int = 1'b0; + #(GRES_START); + GRESTORE_int = 1'b1; + #(GRES_WIDTH); + GRESTORE_int = 1'b0; + end + +endmodule +`endif diff --git a/proj/AudioProc.sim/sim_1/behav/xsim/simulate.log b/proj/AudioProc.sim/sim_1/behav/xsim/simulate.log new file mode 100644 index 0000000..3a14ee6 --- /dev/null +++ b/proj/AudioProc.sim/sim_1/behav/xsim/simulate.log @@ -0,0 +1 @@ +Time resolution is 1 ps diff --git a/proj/AudioProc.sim/sim_1/behav/xsim/simulate.sh b/proj/AudioProc.sim/sim_1/behav/xsim/simulate.sh new file mode 100755 index 0000000..e6d1d1c --- /dev/null +++ b/proj/AudioProc.sim/sim_1/behav/xsim/simulate.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash +# **************************************************************************** +# Vivado (TM) v2024.1 (64-bit) +# +# Filename : simulate.sh +# Simulator : AMD Vivado Simulator +# Description : Script for simulating the design by launching the simulator +# +# Generated by Vivado on Wed Feb 26 12:18:18 CET 2025 +# SW Build 5076996 on Wed May 22 18:36:09 MDT 2024 +# +# Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. +# Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. +# +# usage: simulate.sh +# +# **************************************************************************** +set -Eeuo pipefail +# simulate design +echo "xsim tb_firUnit_behav -key {Behavioral:sim_1:Functional:tb_firUnit} -tclbatch tb_firUnit.tcl -log simulate.log" +xsim tb_firUnit_behav -key {Behavioral:sim_1:Functional:tb_firUnit} -tclbatch tb_firUnit.tcl -log simulate.log + diff --git a/proj/AudioProc.sim/sim_1/behav/xsim/tb_firUnit.tcl b/proj/AudioProc.sim/sim_1/behav/xsim/tb_firUnit.tcl new file mode 100644 index 0000000..1094e45 --- /dev/null +++ b/proj/AudioProc.sim/sim_1/behav/xsim/tb_firUnit.tcl @@ -0,0 +1,11 @@ +set curr_wave [current_wave_config] +if { [string length $curr_wave] == 0 } { + if { [llength [get_objects]] > 0} { + add_wave / + set_property needs_save false [current_wave_config] + } else { + send_msg_id Add_Wave-1 WARNING "No top level signals found. Simulator will start without a wave window. If you want to open a wave window go to 'File->New Waveform Configuration' or type 'create_wave_config' in the TCL console." + } +} + +run 1000ns diff --git a/proj/AudioProc.sim/sim_1/behav/xsim/tb_firUnit_behav.wdb b/proj/AudioProc.sim/sim_1/behav/xsim/tb_firUnit_behav.wdb new file mode 100644 index 0000000000000000000000000000000000000000..d0b4d93baa959cb7c0df7f33dd774ebc51d719ca GIT binary patch literal 53384 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 literal 0 HcmV?d00001 diff --git a/proj/AudioProc.sim/sim_1/behav/xsim/tb_firUnit_vhdl.prj b/proj/AudioProc.sim/sim_1/behav/xsim/tb_firUnit_vhdl.prj new file mode 100644 index 0000000..0107b4e --- /dev/null +++ b/proj/AudioProc.sim/sim_1/behav/xsim/tb_firUnit_vhdl.prj @@ -0,0 +1,9 @@ +# compile vhdl design source files +vhdl xil_defaultlib \ +"../../../../../src/hdl/controlUnit.vhd" \ +"../../../../../src/hdl/operativeUnit.vhd" \ +"../../../../../src/hdl/firUnit.vhd" \ +"../../../../../src/hdl/tb_firUnit.vhd" \ + +# Do not sort compile order +nosort diff --git a/proj/AudioProc.sim/sim_1/behav/xsim/tb_firUnit_vlog.prj b/proj/AudioProc.sim/sim_1/behav/xsim/tb_firUnit_vlog.prj new file mode 100644 index 0000000..76b7b44 --- /dev/null +++ b/proj/AudioProc.sim/sim_1/behav/xsim/tb_firUnit_vlog.prj @@ -0,0 +1,7 @@ +# compile verilog/system verilog design source files + +# compile glbl module +verilog xil_defaultlib "glbl.v" + +# Do not sort compile order +nosort diff --git a/proj/AudioProc.sim/sim_1/behav/xsim/xelab.pb b/proj/AudioProc.sim/sim_1/behav/xsim/xelab.pb new file mode 100644 index 0000000000000000000000000000000000000000..43a1def838315285f5ced7ff416a763f33fc462d GIT binary patch literal 2199 zcmd<`=3-MVR!}YG5@3;HHZe5N;w;Y0EzL<R$uBYz;t~kUEK5wuR|tlSadNSj85tOv z=ov<_n;7dFTbi3^Fch#<uuNcN5Mbh(#mL1BHVoOETCQs6{DR7&%=C;B1w%^<GhHJC zBO`@~%$&@;3LOQ{yktEE$DAC6AdrG$g`m{p)S|M~6g@74E|3P0E)xaEl(NLU<kS=e z-^}Eqd<B=(vdrYvVmziGJMR(`7f(=WUS4Kix)sdR#>U3Tj-AWIHH%5Vw75t=BR@A) zKQ*toB*{?U*VR=Y;$HnSaF9U4Kpzr5`cPg{W}bd&UU^YsK|yMYeokJ6nTcM$eno0d zVv>TcZf0I`k%F#nN@`MRx<W~1L1uDdj)JakQEE<Ng@UebZi#}0g07E3MP^QXN@`kS zX--K_W)euGG%vF_Gq*UtEVT&A%}q=$%7^ibQ<F=JQZoxcauo%+3c9+*d5HzZ8Tlm& zB}wsVnMI*_nI-W_sTql7Xol+{<k4l)bCPltbaV346+o`fFG?&))dTS$v2J2wi5#p> zT;id{nR)37s>KS$If-Sd3MCmusfj6&RAp>#jvT<uT#Ob_Q!I^9O_2#MNh~S>8B|=7 zSdy6xw>vXG51c@aO^lF?f|_D#fozI9mtsI-aj`;3Mp1rgdWM2ueqL~97068gf|AVK z%&OEPuu*0frszhQm>Q!bW@j#0=ltA)oYa!k6a^eEGO|F<G7uLTTbd!e$d^kU;V(!= z%FNGGNJ%V7R7lIoFIPy+OU$V(&V+`Ri6OeXj7>~Y+~vomf#fcNCK{PrVwh-bX^QN` zATHIA%-mE^*2~W+Ede<%Ex$+sS`>h|nealw*u(_MI3rdrX2XJFh{sLL43JIr=Hdmp z6O_$CNdp}0#umtqF%shvDM(DtPE1c#C@x9SD=taQOGzwBff#3MfZ|9`!p4bk2_YL- zl3G!cnUB@5Ai{>pa!JDs%S=s8)hjMZiO<PT&rFUtG&D28YN|hBQ>C~hP)yA$%}p)J zOpY%u!S3roE@4C<=H{oA=A<g97K2M`1LPD83QE+XLl2aPxghSeG)2j3lNbp*G?ptm zu_!qsvm`aSq_iki0nCZdFGwv)EXgcOEzQd;QOHkINX;wBEU82<K9ckEN{aGxKqZet zG?W9<0V~;JA<jaJ;i*J8D}gHx>=I;W5$h_r<00;Xa|yewg$S4VbNOPpEE81zf{e!< zRL}xiAv!Iy2&58!5LFP4IA<<LEbf35^&ksyI|ZQzYxIP3$vTy0=9D0p3-GE2T<c3Q r8<|@mmkvT)0uVz%Ar7g7AVwQonjjYyd|X_vc_|7(smb|8DFTcDuFIH+ literal 0 HcmV?d00001 diff --git a/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/Compile_Options.txt b/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/Compile_Options.txt new file mode 100644 index 0000000..2965ab3 --- /dev/null +++ b/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/Compile_Options.txt @@ -0,0 +1 @@ +--incr --debug "typical" --relax --mt "8" -L "xil_defaultlib" -L "unisims_ver" -L "unimacro_ver" -L "secureip" -L "xpm" --snapshot "tb_firUnit_behav" "xil_defaultlib.tb_firUnit" "xil_defaultlib.glbl" -log "elaborate.log" diff --git a/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/TempBreakPointFile.txt b/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/TempBreakPointFile.txt new file mode 100644 index 0000000..fdbc612 --- /dev/null +++ b/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/TempBreakPointFile.txt @@ -0,0 +1 @@ +Breakpoint File Version 1.0 diff --git a/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/obj/xsim_0.lnx64.o b/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/obj/xsim_0.lnx64.o new file mode 100644 index 0000000000000000000000000000000000000000..fd26a49c73c760d2b064fe359086ffce61f6723f GIT binary patch literal 25536 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 literal 0 HcmV?d00001 diff --git a/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/obj/xsim_1.c b/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/obj/xsim_1.c new file mode 100644 index 0000000..71dfa28 --- /dev/null +++ b/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/obj/xsim_1.c @@ -0,0 +1,142 @@ +/**********************************************************************/ +/* ____ ____ */ +/* / /\/ / */ +/* /___/ \ / */ +/* \ \ \/ */ +/* \ \ Copyright (c) 2003-2020 Xilinx, Inc. */ +/* / / All Right Reserved. */ +/* /---/ /\ */ +/* \ \ / \ */ +/* \___\/\___\ */ +/**********************************************************************/ + +#if defined(_WIN32) + #include "stdio.h" + #define IKI_DLLESPEC __declspec(dllimport) +#else + #define IKI_DLLESPEC +#endif +#include "iki.h" +#include <string.h> +#include <math.h> +#ifdef __GNUC__ +#include <stdlib.h> +#else +#include <malloc.h> +#define alloca _alloca +#endif +/**********************************************************************/ +/* ____ ____ */ +/* / /\/ / */ +/* /___/ \ / */ +/* \ \ \/ */ +/* \ \ Copyright (c) 2003-2020 Xilinx, Inc. */ +/* / / All Right Reserved. */ +/* /---/ /\ */ +/* \ \ / \ */ +/* \___\/\___\ */ +/**********************************************************************/ + +#if defined(_WIN32) + #include "stdio.h" + #define IKI_DLLESPEC __declspec(dllimport) +#else + #define IKI_DLLESPEC +#endif +#include "iki.h" +#include <string.h> +#include <math.h> +#ifdef __GNUC__ +#include <stdlib.h> +#else +#include <malloc.h> +#define alloca _alloca +#endif +typedef void (*funcp)(char *, char *); +extern int main(int, char**); +IKI_DLLESPEC extern void execute_2(char*, char *); +IKI_DLLESPEC extern void execute_3(char*, char *); +IKI_DLLESPEC extern void execute_4(char*, char *); +IKI_DLLESPEC extern void execute_5(char*, char *); +IKI_DLLESPEC extern void execute_6(char*, char *); +IKI_DLLESPEC extern void execute_7(char*, char *); +IKI_DLLESPEC extern void execute_8(char*, char *); +IKI_DLLESPEC extern void execute_9(char*, char *); +IKI_DLLESPEC extern void execute_10(char*, char *); +IKI_DLLESPEC extern void execute_11(char*, char *); +IKI_DLLESPEC extern void execute_36(char*, char *); +IKI_DLLESPEC extern void execute_37(char*, char *); +IKI_DLLESPEC extern void execute_38(char*, char *); +IKI_DLLESPEC extern void execute_39(char*, char *); +IKI_DLLESPEC extern void execute_42(char*, char *); +IKI_DLLESPEC extern void execute_43(char*, char *); +IKI_DLLESPEC extern void execute_44(char*, char *); +IKI_DLLESPEC extern void execute_45(char*, char *); +IKI_DLLESPEC extern void execute_46(char*, char *); +IKI_DLLESPEC extern void execute_47(char*, char *); +IKI_DLLESPEC extern void execute_48(char*, char *); +IKI_DLLESPEC extern void execute_49(char*, char *); +IKI_DLLESPEC extern void execute_52(char*, char *); +IKI_DLLESPEC extern void execute_53(char*, char *); +IKI_DLLESPEC extern void execute_54(char*, char *); +IKI_DLLESPEC extern void execute_55(char*, char *); +IKI_DLLESPEC extern void execute_56(char*, char *); +IKI_DLLESPEC extern void execute_57(char*, char *); +IKI_DLLESPEC extern void execute_58(char*, char *); +IKI_DLLESPEC extern void execute_59(char*, char *); +IKI_DLLESPEC extern void execute_60(char*, char *); +IKI_DLLESPEC extern void execute_61(char*, char *); +IKI_DLLESPEC extern void execute_62(char*, char *); +IKI_DLLESPEC extern void vlog_transfunc_eventcallback(char*, char*, unsigned, unsigned, unsigned, char *); +IKI_DLLESPEC extern void transaction_34(char*, char*, unsigned, unsigned, unsigned); +IKI_DLLESPEC extern void vhdl_transfunc_eventcallback(char*, char*, unsigned, unsigned, unsigned, char *); +funcp funcTab[36] = {(funcp)execute_2, (funcp)execute_3, (funcp)execute_4, (funcp)execute_5, (funcp)execute_6, (funcp)execute_7, (funcp)execute_8, (funcp)execute_9, (funcp)execute_10, (funcp)execute_11, (funcp)execute_36, (funcp)execute_37, (funcp)execute_38, (funcp)execute_39, (funcp)execute_42, (funcp)execute_43, (funcp)execute_44, (funcp)execute_45, (funcp)execute_46, (funcp)execute_47, (funcp)execute_48, (funcp)execute_49, (funcp)execute_52, (funcp)execute_53, (funcp)execute_54, (funcp)execute_55, (funcp)execute_56, (funcp)execute_57, (funcp)execute_58, (funcp)execute_59, (funcp)execute_60, (funcp)execute_61, (funcp)execute_62, (funcp)vlog_transfunc_eventcallback, (funcp)transaction_34, (funcp)vhdl_transfunc_eventcallback}; +const int NumRelocateId= 36; + +void relocate(char *dp) +{ + iki_relocate(dp, "xsim.dir/tb_firUnit_behav/xsim.reloc", (void **)funcTab, 36); + iki_vhdl_file_variable_register(dp + 14184); + iki_vhdl_file_variable_register(dp + 14240); + + + /*Populate the transaction function pointer field in the whole net structure */ +} + +void sensitize(char *dp) +{ + iki_sensitize(dp, "xsim.dir/tb_firUnit_behav/xsim.reloc"); +} + +void simulate(char *dp) +{ + iki_schedule_processes_at_time_zero(dp, "xsim.dir/tb_firUnit_behav/xsim.reloc"); + // Initialize Verilog nets in mixed simulation, for the cases when the value at time 0 should be propagated from the mixed language Vhdl net + iki_execute_processes(); + + // Schedule resolution functions for the multiply driven Verilog nets that have strength + // Schedule transaction functions for the singly driven Verilog nets that have strength + +} +#include "iki_bridge.h" +void relocate(char *); + +void sensitize(char *); + +void simulate(char *); + +extern SYSTEMCLIB_IMP_DLLSPEC void local_register_implicit_channel(int, char*); +extern SYSTEMCLIB_IMP_DLLSPEC int xsim_argc_copy ; +extern SYSTEMCLIB_IMP_DLLSPEC char** xsim_argv_copy ; + +int main(int argc, char **argv) +{ + iki_heap_initialize("ms", "isimmm", 0, 2147483648) ; + iki_set_xsimdir_location_if_remapped(argc, argv) ; + iki_set_sv_type_file_path_name("xsim.dir/tb_firUnit_behav/xsim.svtype"); + iki_set_crvs_dump_file_path_name("xsim.dir/tb_firUnit_behav/xsim.crvsdump"); + void* design_handle = iki_create_design("xsim.dir/tb_firUnit_behav/xsim.mem", (void *)relocate, (void *)sensitize, (void *)simulate, (void*)0, 0, isimBridge_getWdbWriter(), 0, argc, argv); + iki_set_rc_trial_count(100); + (void) design_handle; + return iki_simulate_design(); +} diff --git a/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/obj/xsim_1.lnx64.o b/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/obj/xsim_1.lnx64.o new file mode 100644 index 0000000000000000000000000000000000000000..dcfcc4cf77c5d909bfcf15f6227b7bd9454bb2c7 GIT binary patch literal 6392 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 HVRZcf$v!#d literal 0 HcmV?d00001 diff --git a/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/xsim.dbg b/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/xsim.dbg new file mode 100644 index 0000000000000000000000000000000000000000..c4347e3f93a5040bb0e1bb21df1e1df4dc5e4260 GIT binary patch literal 15928 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 Pz#^dbE@&JR%t0dn>JzXR literal 0 HcmV?d00001 diff --git a/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/xsim.mem b/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/xsim.mem new file mode 100644 index 0000000000000000000000000000000000000000..785892ba0771a16820976a1443d985724524a185 GIT binary patch literal 4535 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 literal 0 HcmV?d00001 diff --git a/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/xsim.reloc b/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/xsim.reloc new file mode 100644 index 0000000000000000000000000000000000000000..6869d0e22b1d4b618f72423da2d86f716a804da7 GIT binary patch literal 2004 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 literal 0 HcmV?d00001 diff --git a/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/xsim.rlx b/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/xsim.rlx new file mode 100644 index 0000000..1198a3c --- /dev/null +++ b/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/xsim.rlx @@ -0,0 +1,12 @@ + +{ + crc : 15088705700611705432 , + ccp_crc : 0 , + cmdline : " --incr --debug typical --relax --mt 8 -L xil_defaultlib -L unisims_ver -L unimacro_ver -L secureip -L xpm --snapshot tb_firUnit_behav xil_defaultlib.tb_firUnit xil_defaultlib.glbl" , + buildDate : "May 22 2024" , + buildTime : "18:54:44" , + linkCmd : "/usr/bin/gcc -Wa,-W -O -fPIC -m64 -Wl,--no-as-needed -Wl,--unresolved-symbols=ignore-all -o \"xsim.dir/tb_firUnit_behav/xsimk\" \"xsim.dir/tb_firUnit_behav/obj/xsim_0.lnx64.o\" \"xsim.dir/tb_firUnit_behav/obj/xsim_1.lnx64.o\" -L\"/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/lib/lnx64.o\" -lrdi_simulator_kernel -L/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/lib/lnx64.o/../../tps/lnx64/gcc-9.3.0/bin/../lib64 -Wl,--disable-new-dtags -Wl,-rpath=/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/lib/lnx64.o/../../tps/lnx64/gcc-9.3.0/bin/../lib64 -lrdi_simbridge_kernel" , + aggregate_nets : + [ + ] +} \ No newline at end of file diff --git a/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/xsim.rtti b/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/xsim.rtti new file mode 100644 index 0000000000000000000000000000000000000000..514dd6e6ffba7b1befff5cfa64c8e3220bf63715 GIT binary patch literal 753 zcma#Z%*o8FQ1A@S%vA`93~*I&^Yn35FfcG=u)44GYhOAy0|UcMCI$vA1_lOZ28IPW z`RSR-46F<gz{tSBz{0@5V8CF=5XBGy7F1?n0Ld>XPEO28EQ-&}D*<sC7#SEE{{R19 z57J`Dz`!8Dz_0)$$iU370IUxr0mEPc1_p+I|NsA=`~UxcFR1OoAujPg{_dX63``6R zV9d<Gz`)7Cz@Q$g&Y&Kl&Y*6f&Y*6n&Y&Kp&Y&Ky&Y<q2&Y<q0&Y-TV4z|r3$)r%q zj8cGl)Xy;_G|15h>>QB8VZL;P`V#Kw_%K)J5dR>sLPmxK;E)6P7!;Zy8l)M7VZM%q zx-}%exFoS86|4{BZ;*Nr4tMkni4S)44e)Vg2oCWNa%Bhz@^^L(4)*kOkN5HS4`A>Q z4G9PhVE`+1^>cwK23ckfbDgKVpQ{VlY+~F5^R%a5h^xCR#4ij;QR@jcwkS0{v$!O+ z$SpGm;&71R91INLNB~6`$Ri-n@<YYgK^z7KhX2qg*MRbapmZseUIwK<Kxu1`XBZe5 SqM`I0DE$*k8$c}zfYJbpY=I&G literal 0 HcmV?d00001 diff --git a/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/xsim.svtype b/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/xsim.svtype new file mode 100644 index 0000000000000000000000000000000000000000..7c62b4eaf2065362ca4b433deed275cf688ee99e GIT binary patch literal 47 jcmY#pfB;4Y1_luR|NsAg5Y52I!oa}53=-vmr~s1yeZ>Sg literal 0 HcmV?d00001 diff --git a/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/xsim.type b/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/xsim.type new file mode 100644 index 0000000000000000000000000000000000000000..112d10a15968cd75d8edf862403b0159a116c6d2 GIT binary patch literal 7048 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 RfbwDSS%JoPfTkmu`2f4Br1$^; literal 0 HcmV?d00001 diff --git a/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/xsim.xdbg b/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/xsim.xdbg new file mode 100644 index 0000000000000000000000000000000000000000..103afc92d21a77de25a81cd1edc31c924a16c56f GIT binary patch literal 13064 zcma#Z%*o8FP>2Z5%vFeRadKBMFl12rwJ+U)fq|ieg@J*?7=fc17#K<z8BhS6YxeLF zhz-IFW)B~6FfcGMfmA}pxu9&2I5(6HQY(za7GYpuV1%j{g|b1?|NsC04>A*^UJNP@ zVv8fOC6L&XP&TsOQ8pwDX&nxrcmde~i!U&r%=91yG6<R;q><P%NNiaowj2^$9*M1h z#0D|Z-3D?aEPaC5w6GUBohyPI0ri&>5*x%scN-|bAm<}$g#*lwAoF4Qv4MesK^f!- zvxkpB?8Q(vNR2WmV4(4+4P^^3FfbTH*`U1ZjKmIyvO#*Yp==OU3?j@PJ^~pH%hw<_ zBLhSX#AX2zP@LflVIa%1GB7aQ(0TaiZ#@HpfFDfWhzG)AU|@$a7#J85{2?4h1|uGj z)gX*Z9u&?Xj7y%Gfq?;pamj<+4Z^tOLGA`&T=HxT3=ANQOCBT+!w_E~`wtO*ATvPz z0IAu5C45vF7#J+pM}fm@LOMtl0|RpS;F1TK3BtJKL16>Jxa2`$1H!oEL16>Jxa2|p z0%2V8u&}`@ξ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 WKkV{|^}C=kW|;pqKpi>;1_l6m*D2Hh literal 0 HcmV?d00001 diff --git a/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/xsimSettings.ini b/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/xsimSettings.ini new file mode 100644 index 0000000..cb0db76 --- /dev/null +++ b/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/xsimSettings.ini @@ -0,0 +1,50 @@ +[General] +ARRAY_DISPLAY_LIMIT=512 +RADIX=hex +TIME_UNIT=ns +TRACE_LIMIT=2147483647 +VHDL_ENTITY_SCOPE_FILTER=true +VHDL_PACKAGE_SCOPE_FILTER=false +VHDL_BLOCK_SCOPE_FILTER=true +VHDL_PROCESS_SCOPE_FILTER=false +VHDL_PROCEDURE_SCOPE_FILTER=false +VERILOG_MODULE_SCOPE_FILTER=true +VERILOG_PACKAGE_SCOPE_FILTER=false +VERILOG_BLOCK_SCOPE_FILTER=false +VERILOG_TASK_SCOPE_FILTER=false +VERILOG_PROCESS_SCOPE_FILTER=false +INPUT_OBJECT_FILTER=true +OUTPUT_OBJECT_FILTER=true +INOUT_OBJECT_FILTER=true +INTERNAL_OBJECT_FILTER=true +CONSTANT_OBJECT_FILTER=true +VARIABLE_OBJECT_FILTER=true +INPUT_PROTOINST_FILTER=true +OUTPUT_PROTOINST_FILTER=true +INOUT_PROTOINST_FILTER=true +INTERNAL_PROTOINST_FILTER=true +CONSTANT_PROTOINST_FILTER=true +VARIABLE_PROTOINST_FILTER=true +SCOPE_NAME_COLUMN_WIDTH=181 +SCOPE_DESIGN_UNIT_COLUMN_WIDTH=209 +SCOPE_BLOCK_TYPE_COLUMN_WIDTH=103 +OBJECT_NAME_COLUMN_WIDTH=183 +OBJECT_VALUE_COLUMN_WIDTH=49 +OBJECT_DATA_TYPE_COLUMN_WIDTH=75 +PROCESS_NAME_COLUMN_WIDTH=75 +PROCESS_TYPE_COLUMN_WIDTH=75 +FRAME_INDEX_COLUMN_WIDTH=75 +FRAME_NAME_COLUMN_WIDTH=75 +FRAME_FILE_NAME_COLUMN_WIDTH=75 +FRAME_LINE_NUM_COLUMN_WIDTH=75 +LOCAL_NAME_COLUMN_WIDTH=75 +LOCAL_VALUE_COLUMN_WIDTH=75 +LOCAL_DATA_TYPE_COLUMN_WIDTH=0 +PROTO_NAME_COLUMN_WIDTH=0 +PROTO_VALUE_COLUMN_WIDTH=0 +INPUT_LOCAL_FILTER=1 +OUTPUT_LOCAL_FILTER=1 +INOUT_LOCAL_FILTER=1 +INTERNAL_LOCAL_FILTER=1 +CONSTANT_LOCAL_FILTER=1 +VARIABLE_LOCAL_FILTER=1 diff --git a/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/xsimcrash.log b/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/xsimcrash.log new file mode 100644 index 0000000..e69de29 diff --git a/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/xsimk b/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/xsimk new file mode 100755 index 0000000000000000000000000000000000000000..26fd0f57b5f397efeca3d326d391d9bceb4a4fe6 GIT binary patch literal 32824 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 CkVzf@ literal 0 HcmV?d00001 diff --git a/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/xsimkernel.log b/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/xsimkernel.log new file mode 100644 index 0000000..dd6b8e0 --- /dev/null +++ b/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/tb_firUnit_behav/xsimkernel.log @@ -0,0 +1,7 @@ +Running: xsim.dir/tb_firUnit_behav/xsimk -simmode gui -wdb tb_firUnit_behav.wdb -simrunnum 0 -socket 51495 +Design successfully loaded +Design Loading Memory Usage: 20184 KB (Peak: 20756 KB) +Design Loading CPU Usage: 20 ms +Simulation completed +Simulation Memory Usage: 101920 KB (Peak: 159452 KB) +Simulation CPU Usage: 50 ms diff --git a/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/controlunit.vdb b/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/controlunit.vdb new file mode 100644 index 0000000000000000000000000000000000000000..e5b493bb031c710228bfcd9d659a5053a197fa98 GIT binary patch literal 8400 zcmWg2k!R*+U|7Jwz`)?}q)MKdL-6aqbP$h`K|z7R;r+fdyByLPHgGZUIlKC0`DHqK zdwMzexu$V1Zs}Xm-n(dVUvJ~tLffhT9a&u+q8Jz${zHL70s{ksms@s!maG3xzl7v0 z{{)W(eqL@1Jd!gOBxGbb`mS2+(VOM(=<1c3<=N|*oaN{0-J6uPz(2vm%hR`a=FSD4 zp1!?)UT)bS(M(6r<jl!%jSDh7eG}Xk(8Urd1_lNuP>?V<FfuS~U}j=uux4UzUc8XQ zE7{S@-!Us=g^g-^zE{L4h%j4%YgU?PmYg$p;s4_as-QqzD`(Bb;_2z>%C~Cu!i5eV zt}Y3F4qjOqkC(k?IJ{W#0W%{+mBageYvq`bIY{CVCe$GA=EVzb8(S82^sMMxwoK&$ zPpaN&hyt(~3=I4Z{tOHZVo<k(oD0GX3@E}ZKFJ9wU;<qN<XEta85kTEGB7Z}0s%SR zL2L_X8em{>U}6wpU|`^O$YWq&kcHaI-rCsP-e}tbr9~XtnFSaa99ozK7?_wC87vsU zs^ws+7k4b|SY+G64xw?VmWQeq@^bZa%=Yw4@^#F}%1rWib#Mg>?FI|&fCx>+ZleO! z3;|F71TPnV*NhBLkA&nT2Un25EF=LO`W2!2xfge}bT4df=xw*{1+xvoY*`drnHfwV z{#1hM;$66~V^MQ+!{U~{7TaDZPXNrrp;H-6=b}bronRggohneBoINWRf^F#K>{($5 zX5rAGilhVV8?X*A3x^Ihs1EieU{$^BCSV$eYIUe;(dL%+hE*Ny{XGo}n>!YDEN*Y< zvh4+nT7g9kp`uc@=q4F}vZ4Tk!+I_O28RtGVk3yy1R^$rh%F#uD~Q+zBDRBw9Ux*S zmjD9;vqKQG0K<QWrK}*5l|g{vKS(fuS%AS|F{=QB12cmFgTp$IQZUKtP>+<C7?>PZ zgN$0kCBVRlD#Pfo7Np5a9O^{|Mm;zaT!Jt#U<f!gFfcHns{&^|Fab6Zs~WVj1dYo8 z_M<4e!T<j=Ffdq2AlwIM!rX^00Ja-l5bQKCfp8zX8ss7hnauzWcTsfZ5SPKq83sl@ zI1}bFbOEr-&;>!I90)_=2o$#HD&WO7oWbA#N&}+k3PCPngw=-(|Fz(Orl<{Lg3=+w z21Zbw04{gI1X4LnLcxx%70L&ds{9Tv3=9l<P)pf67B?(jXuB9n8#6F4Fta*LL{h;G z&OQrm7q>L5<dzVZmk}_uH5L)DbhrRYouEpZ0YyD)$D-cF3t1(MWQ`3WY8V+9{-dhl z@9*txx9#j}S-7yHv3F5Fzr3uhxUHm|h@qi`psbNRL?07|KDMmPq^!&Ywp}|n?b^8k zqKX+q6+hI)&3zqUSMx(%Ei5O2<Z>2}KIZ@b4PfCf3~GgRtZG@@u&ATI*S4j*aZv+E z%mPh}fx+QCD9eJfw8J?N>mrD_1R^ejh$|rCDwhC*DlC+lnRJ*y7?k*!z|Mvc9N=0G zB<jG&$iRTmz|y>SK{J>DN#f8Vj-rK`Nu3FV@o3;h)1b%1%%lfyjo`3>A4LO8^V)SF zN3CndV}~TVmh~Vl>+xxk0BO<Cho(q=aEe^q2dcgMZ5J&B^9^BqBWRjpaJbFDz@T9O z)x-<dv}ncR6<xNA7J_+(5FV-q1_lN;hwGsDxd9?>f{0rn;x>r511^L?nZ)55C~<>H zNU01<Bn(X8HV=#oDjYx<+Twu;gIhshf`I`k(-%Np>%a)A5<tZXOamxDK^W8ug0+N^ z*$m7MlaTTx10?x`BMY%Q;7W!L^BEWzV8P44=x`V0SCH*+F_6^^3=HhxP=pr-i@~-q zFo5;LLYjfm;T}vsTnxW{4i;0W$3YzfP_q|WsDZK(R4W4)6SxFMQVEuUw)J3bz7|L= z4RSn&N=Q2o*4}FYSLF<h4m}JE4CV;?#gN!w8^G403ql)>sD?Q_5MW@iKv&AlslW-s z4w0Z5Kb~2DfsxGuVISCdBtF<qaGG8SOViLaj>HE?5d$Muy(r}|w4?)-&EV)~bf{ur zV6cQ*&k19IEd>QWDB#cqxjQ<WJHUl;%OYep)P8j3*kfc3ivR-y3nQBq)M}VzNPMs( zNbxzkUU0Tv2+7vaOb+LP6D0$S1CsT)5*jl&Sdml`?=Y-7!Tkg*T?bSl2XLbj6#nQo zgL(-V-3Al^2T)s-fzctJfq}sZ$%i1*kod&=gG~$61^|`(kTeG4flUDQyO7cqa(aWN zF;JFrMYux@i48UZ98Bnfqy!T<qoErB%48snoYCA6t^iw##0R^CaFT%p0J=VCBL>`* zaRAlq42*0ZXm%m-NwN!FA94UAv%!I_<qfqJ;!YS3Y#{>!1BN>p*?gcHU^x(p57tF& zkf7_sXtSZU;T%A1A1yzq?GWd}cwmbe7#N5$15#vz1{^>M6x3HjVuMWrM>V=2k=Y1R zh@)!;r7I9dPFn#`ufPHli4S%Ku>py$57vl<v}GMYtwjb#wjeaykoY9ohOUpOAlC|o z+75{}7!PbQsL2FzD%9a%7c;VjLAAhw2Z;~XM{Mw*>%(ZhL(3vqYu*9Wvet@#+759r zj0d(Dl+MufpqmLc1Cq`np$37{84??85;&cq3zA%pp&P)=$<GPG4iSh318A@ln%cpZ zBJsg4AvQ44^&yuh$ZT-g!obKDgYZ4rUL-zA_M+=U4{&roI0Cdl^%=<5j1Ef}7#LtY zu*IN$<$nf7HqgK?NC_;JA@RZLhz%HYeaL}<%!ULExZ&%th=GA26)k{}_+b0F(Z}qd z<980Aks}5MCR3OOMhh4VtPj-BMs7HYq054!16`1)))Tmd!>S#lwg7j9@H!DGsWLEt zLnI9?M3DGkpFu|;QO6^pJO|KF8Yom?niwr$EU;dTP(hakdkbBV#85%kjw4iH%CI>R zGgLs+9LVVui4XP}EL6awtFTep1_;jqG`0u|6__SQ3m6Nm7b8^AWx=6>E=XdiU}#6H z-qGt3aCHw!KQOJ>oQ)Y$8EEMTi4XQI%Gfe=l-U6^@Cphcm|{i?7z?ZiBZSap!6Ae$ zNMZ<~YsZmpV9KyL5i>M0(Lw`>5B3=-G{EEEpmB3p*#a7Y289MpF{1^H1=fQR8tAg% z&_EX?F*Go=6Q5pSTCq7BGla6xLI{Zu_APv#06Jgb02-PHg$_(1qXmowR*w-n=(6C@ zK^G)3bkMa!n@&&)+=7DS9hgFFjzkFy25u?XJQxE5BV-uFj*)=@>{^5j#EYDbEuFpX zw#|zdB3O`FB#1m{4h}X?1~Lsi>j5_nAp=p3FayCtHw`wA1~LuY(}kOckRjeQ*o+#; zG*I8y0d5*XhIrFp^J^f}K-IEC2rS$XGQ^t(n|A}52CB{wrXggAHw`uy2Qm#*4IoTI z$PjNDY<>=88mP!bn1+xc-Za?U9mq6Lk%KS|Aw#@ruz5X@X`n2MFbyF?ylJp`Kagpl UX*h&w2pOVHgD6BM9YAXt07^^*rT_o{ literal 0 HcmV?d00001 diff --git a/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/firunit.vdb b/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/firunit.vdb new file mode 100644 index 0000000000000000000000000000000000000000..2cf98a3546b473f17e7037553c90a8b839f20f60 GIT binary patch literal 10393 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 A>Hq)$ literal 0 HcmV?d00001 diff --git a/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/glbl.sdb b/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/glbl.sdb new file mode 100644 index 0000000000000000000000000000000000000000..afa4a45e5e6cc7ce5d9582c87c404fb5d37d4e8b GIT binary patch literal 5679 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 literal 0 HcmV?d00001 diff --git a/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/operativeunit.vdb b/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/operativeunit.vdb new file mode 100644 index 0000000000000000000000000000000000000000..4b23e04abbf21bd772d9bd365639ac569d3703b5 GIT binary patch literal 14228 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 H(0)7s)!(sk literal 0 HcmV?d00001 diff --git a/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/tb_firunit.vdb b/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/tb_firunit.vdb new file mode 100644 index 0000000000000000000000000000000000000000..409b8b8e28f7e365bd4bc4e80e1a579d11512ea5 GIT binary patch literal 7470 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 literal 0 HcmV?d00001 diff --git a/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/xil_defaultlib.rlx b/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/xil_defaultlib.rlx new file mode 100644 index 0000000..264db57 --- /dev/null +++ b/proj/AudioProc.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/xil_defaultlib.rlx @@ -0,0 +1,9 @@ +0.7 +2020.2 +May 22 2024 +18:54:44 +/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim/glbl.v,1708598507,verilog,,,,glbl,,,,,,,, +/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd,1740567123,vhdl,/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd,,,controlunit,,,,,,,, +/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd,1740559580,vhdl,/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/tb_firUnit.vhd,,,firunit,,,,,,,, +/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd,1740569105,vhdl,/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd,,,operativeunit,,,,,,,, +/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/tb_firUnit.vhd,1740559580,vhdl,,,,tb_firunit,,,,,,,, diff --git a/proj/AudioProc.sim/sim_1/behav/xsim/xsim.ini b/proj/AudioProc.sim/sim_1/behav/xsim/xsim.ini new file mode 100644 index 0000000..65c1bae --- /dev/null +++ b/proj/AudioProc.sim/sim_1/behav/xsim/xsim.ini @@ -0,0 +1,490 @@ +std=$RDI_DATADIR/xsim/vhdl/std +ieee=$RDI_DATADIR/xsim/vhdl/ieee +ieee_proposed=$RDI_DATADIR/xsim/vhdl/ieee_proposed +vl=$RDI_DATADIR/xsim/vhdl/vl +synopsys=$RDI_DATADIR/xsim/vhdl/synopsys +uvm=$RDI_DATADIR/xsim/system_verilog/uvm +secureip=$RDI_DATADIR/xsim/verilog/secureip +unisim=$RDI_DATADIR/xsim/vhdl/unisim +unimacro=$RDI_DATADIR/xsim/vhdl/unimacro +unifast=$RDI_DATADIR/xsim/vhdl/unifast +unisims_ver=$RDI_DATADIR/xsim/verilog/unisims_ver +unimacro_ver=$RDI_DATADIR/xsim/verilog/unimacro_ver +unifast_ver=$RDI_DATADIR/xsim/verilog/unifast_ver +simprims_ver=$RDI_DATADIR/xsim/verilog/simprims_ver +axi_epu_v1_0_4=$RDI_DATADIR/xsim/ip/axi_epu_v1_0_4 +xlconcat_v2_1_6=$RDI_DATADIR/xsim/ip/xlconcat_v2_1_6 +emb_fifo_gen_v1_0_5=$RDI_DATADIR/xsim/ip/emb_fifo_gen_v1_0_5 +mipi_csi2_tx_ctrl_v1_0_6=$RDI_DATADIR/xsim/ip/mipi_csi2_tx_ctrl_v1_0_6 +c_mux_bit_v12_0_9=$RDI_DATADIR/xsim/ip/c_mux_bit_v12_0_9 +smartconnect_v1_0=$RDI_DATADIR/xsim/ip/smartconnect_v1_0 +v_smpte_uhdsdi_tx_v1_0_4=$RDI_DATADIR/xsim/ip/v_smpte_uhdsdi_tx_v1_0_4 +cam_v3_0_0=$RDI_DATADIR/xsim/ip/cam_v3_0_0 +microblaze_v11_0_13=$RDI_DATADIR/xsim/ip/microblaze_v11_0_13 +axi_fifo_mm_s_v4_3_3=$RDI_DATADIR/xsim/ip/axi_fifo_mm_s_v4_3_3 +v_hdmi_rx1_v1_0_9=$RDI_DATADIR/xsim/ip/v_hdmi_rx1_v1_0_9 +video_frame_crc_v1_0_6=$RDI_DATADIR/xsim/ip/video_frame_crc_v1_0_6 +hdcp22_cipher_dp_v1_0_2=$RDI_DATADIR/xsim/ip/hdcp22_cipher_dp_v1_0_2 +generic_baseblocks_v2_1_2=$RDI_DATADIR/xsim/ip/generic_baseblocks_v2_1_2 +axis_clock_converter_v1_1_32=$RDI_DATADIR/xsim/ip/axis_clock_converter_v1_1_32 +psx_vip_v1_0_4=$RDI_DATADIR/xsim/ip/psx_vip_v1_0_4 +g975_efec_i4_v1_0_22=$RDI_DATADIR/xsim/ip/g975_efec_i4_v1_0_22 +axi_lite_ipif_v3_0_4=$RDI_DATADIR/xsim/ip/axi_lite_ipif_v3_0_4 +axis_dbg_stub_v1_0_1=$RDI_DATADIR/xsim/ip/axis_dbg_stub_v1_0_1 +ethernet_1_10_25g_v2_7_15=$RDI_DATADIR/xsim/ip/ethernet_1_10_25g_v2_7_15 +an_lt_v1_0_12=$RDI_DATADIR/xsim/ip/an_lt_v1_0_12 +hdmi_gt_controller_v1_0_13=$RDI_DATADIR/xsim/ip/hdmi_gt_controller_v1_0_13 +axi_cdma_v4_1_31=$RDI_DATADIR/xsim/ip/axi_cdma_v4_1_31 +xilinx_vip=$RDI_DATADIR/xsim/ip/xilinx_vip +videoaxi4s_bridge_v1_0_7=$RDI_DATADIR/xsim/ip/videoaxi4s_bridge_v1_0_7 +mdm_riscv_v1_0_2=$RDI_DATADIR/xsim/ip/mdm_riscv_v1_0_2 +axi_uartlite_v2_0_35=$RDI_DATADIR/xsim/ip/axi_uartlite_v2_0_35 +axi_perf_mon_v5_0_33=$RDI_DATADIR/xsim/ip/axi_perf_mon_v5_0_33 +axi_master_burst_v2_0_9=$RDI_DATADIR/xsim/ip/axi_master_burst_v2_0_9 +aie_ps_v1_0=$RDI_DATADIR/xsim/ip/aie_ps_v1_0 +ibert_lib_v1_0_11=$RDI_DATADIR/xsim/ip/ibert_lib_v1_0_11 +axi_datamover_v5_1_33=$RDI_DATADIR/xsim/ip/axi_datamover_v5_1_33 +noc_nps4_v1_0_0=$RDI_DATADIR/xsim/ip/noc_nps4_v1_0_0 +xbip_dsp48_addsub_v3_0_9=$RDI_DATADIR/xsim/ip/xbip_dsp48_addsub_v3_0_9 +v_axi4s_vid_out_v4_0_18=$RDI_DATADIR/xsim/ip/v_axi4s_vid_out_v4_0_18 +axi_chip2chip_v5_0_22=$RDI_DATADIR/xsim/ip/axi_chip2chip_v5_0_22 +gtwizard_ultrascale_v1_7_18=$RDI_DATADIR/xsim/ip/gtwizard_ultrascale_v1_7_18 +axi_infrastructure_v1_1_0=$RDI_DATADIR/xsim/ip/axi_infrastructure_v1_1_0 +switch_core_top_v1_0_16=$RDI_DATADIR/xsim/ip/switch_core_top_v1_0_16 +vitis_net_p4_v2_1_0=$RDI_DATADIR/xsim/ip/vitis_net_p4_v2_1_0 +axi_sideband_util_v1_0_15=$RDI_DATADIR/xsim/ip/axi_sideband_util_v1_0_15 +axis_infrastructure_v1_1_1=$RDI_DATADIR/xsim/ip/axis_infrastructure_v1_1_1 +dist_mem_gen_v8_0_15=$RDI_DATADIR/xsim/ip/dist_mem_gen_v8_0_15 +shell_utils_addr_remap_v1_0_10=$RDI_DATADIR/xsim/ip/shell_utils_addr_remap_v1_0_10 +xbip_addsub_v3_0_9=$RDI_DATADIR/xsim/ip/xbip_addsub_v3_0_9 +dds_compiler_v6_0_25=$RDI_DATADIR/xsim/ip/dds_compiler_v6_0_25 +bscan_axi_v1_0_2=$RDI_DATADIR/xsim/ip/bscan_axi_v1_0_2 +fifo_generator_v13_2_10=$RDI_DATADIR/xsim/ip/fifo_generator_v13_2_10 +dprx_fec_8b10b_v1_0_3=$RDI_DATADIR/xsim/ip/dprx_fec_8b10b_v1_0_3 +pcie_axi4lite_tap_v1_0_2=$RDI_DATADIR/xsim/ip/pcie_axi4lite_tap_v1_0_2 +av_pat_gen_v2_0_2=$RDI_DATADIR/xsim/ip/av_pat_gen_v2_0_2 +polar_v1_1_4=$RDI_DATADIR/xsim/ip/polar_v1_1_4 +v_tpg_v8_2_5=$RDI_DATADIR/xsim/ip/v_tpg_v8_2_5 +tcc_encoder_3gpplte_v4_0_19=$RDI_DATADIR/xsim/ip/tcc_encoder_3gpplte_v4_0_19 +axis_accelerator_adapter_v2_1_18=$RDI_DATADIR/xsim/ip/axis_accelerator_adapter_v2_1_18 +mem_pl_v1_0_2=$RDI_DATADIR/xsim/ip/mem_pl_v1_0_2 +perf_axi_tg_v1_0_13=$RDI_DATADIR/xsim/ip/perf_axi_tg_v1_0_13 +trace_hub_v1_1_0=$RDI_DATADIR/xsim/ip/trace_hub_v1_1_0 +axi_pcie_v2_9_11=$RDI_DATADIR/xsim/ip/axi_pcie_v2_9_11 +axi_emc_v3_0_31=$RDI_DATADIR/xsim/ip/axi_emc_v3_0_31 +tsn_endpoint_ethernet_mac_block_v1_0_16=$RDI_DATADIR/xsim/ip/tsn_endpoint_ethernet_mac_block_v1_0_16 +soft_ecc_proxy_v1_1_1=$RDI_DATADIR/xsim/ip/soft_ecc_proxy_v1_1_1 +axi_apb_bridge_v3_0_20=$RDI_DATADIR/xsim/ip/axi_apb_bridge_v3_0_20 +axis_broadcaster_v1_1_30=$RDI_DATADIR/xsim/ip/axis_broadcaster_v1_1_30 +axis_dwidth_converter_sc_v1_1=$RDI_DATADIR/xsim/ip/axis_dwidth_converter_sc_v1_1 +vid_edid_v1_0_2=$RDI_DATADIR/xsim/ip/vid_edid_v1_0_2 +noc_nidb_v1_0_0=$RDI_DATADIR/xsim/ip/noc_nidb_v1_0_0 +v_vid_in_axi4s_v5_0_4=$RDI_DATADIR/xsim/ip/v_vid_in_axi4s_v5_0_4 +v_dual_splitter_v1_0_11=$RDI_DATADIR/xsim/ip/v_dual_splitter_v1_0_11 +axis_ila_txns_cntr_v1_0_0=$RDI_DATADIR/xsim/ip/axis_ila_txns_cntr_v1_0_0 +pl_fileio_v1_0_0=$RDI_DATADIR/xsim/ip/pl_fileio_v1_0_0 +msm_cpp=$RDI_DATADIR/xsim/ip/msm_cpp +debug_tcp_server_v1=$RDI_DATADIR/xsim/ip/debug_tcp_server_v1 +v_frmbuf_wr_v2_5_2=$RDI_DATADIR/xsim/ip/v_frmbuf_wr_v2_5_2 +v_smpte_uhdsdi_rx_v1_0_3=$RDI_DATADIR/xsim/ip/v_smpte_uhdsdi_rx_v1_0_3 +mpegtsmux_v1_1_9=$RDI_DATADIR/xsim/ip/mpegtsmux_v1_1_9 +noc_nps_v1_0_1=$RDI_DATADIR/xsim/ip/noc_nps_v1_0_1 +v_multi_scaler_v1_2_6=$RDI_DATADIR/xsim/ip/v_multi_scaler_v1_2_6 +x5io_wizard_v1_0_4=$RDI_DATADIR/xsim/ip/x5io_wizard_v1_0_4 +axi_remapper_rx_v1_0_2=$RDI_DATADIR/xsim/ip/axi_remapper_rx_v1_0_2 +emu_perf_common_v1_0=$RDI_DATADIR/xsim/ip/emu_perf_common_v1_0 +sem_ultra_v3_1_26=$RDI_DATADIR/xsim/ip/sem_ultra_v3_1_26 +axi_utils_v2_0_9=$RDI_DATADIR/xsim/ip/axi_utils_v2_0_9 +v_tc_v6_2_8=$RDI_DATADIR/xsim/ip/v_tc_v6_2_8 +ieee802d3_clause74_fec_v1_0_18=$RDI_DATADIR/xsim/ip/ieee802d3_clause74_fec_v1_0_18 +jesd204c_v4_2_14=$RDI_DATADIR/xsim/ip/jesd204c_v4_2_14 +xtlm=$RDI_DATADIR/xsim/ip/xtlm +hdmi_acr_ctrl_v1_0_3=$RDI_DATADIR/xsim/ip/hdmi_acr_ctrl_v1_0_3 +icap_arb_v1_0_2=$RDI_DATADIR/xsim/ip/icap_arb_v1_0_2 +nvme_tc_v3_0_6=$RDI_DATADIR/xsim/ip/nvme_tc_v3_0_6 +axi4svideo_bridge_v1_0_18=$RDI_DATADIR/xsim/ip/axi4svideo_bridge_v1_0_18 +jtag_axi=$RDI_DATADIR/xsim/ip/jtag_axi +axi_intc_v4_1_19=$RDI_DATADIR/xsim/ip/axi_intc_v4_1_19 +v_demosaic_v1_1_11=$RDI_DATADIR/xsim/ip/v_demosaic_v1_1_11 +pcie_jtag_v1_0_1=$RDI_DATADIR/xsim/ip/pcie_jtag_v1_0_1 +xlslice_v1_0_4=$RDI_DATADIR/xsim/ip/xlslice_v1_0_4 +axi_vfifo_ctrl_v2_0_34=$RDI_DATADIR/xsim/ip/axi_vfifo_ctrl_v2_0_34 +gmii_to_rgmii_v4_1_14=$RDI_DATADIR/xsim/ip/gmii_to_rgmii_v4_1_14 +util_reduced_logic_v2_0_6=$RDI_DATADIR/xsim/ip/util_reduced_logic_v2_0_6 +nvmeha_v1_0_12=$RDI_DATADIR/xsim/ip/nvmeha_v1_0_12 +axi_c2c_v1_0_9=$RDI_DATADIR/xsim/ip/axi_c2c_v1_0_9 +ft_prach_v1_2_2=$RDI_DATADIR/xsim/ip/ft_prach_v1_2_2 +v_smpte_uhdsdi_v1_0_11=$RDI_DATADIR/xsim/ip/v_smpte_uhdsdi_v1_0_11 +axi_pmon_v1_0_1=$RDI_DATADIR/xsim/ip/axi_pmon_v1_0_1 +gtwizard_ultrascale_v1_6_16=$RDI_DATADIR/xsim/ip/gtwizard_ultrascale_v1_6_16 +gigantic_mux=$RDI_DATADIR/xsim/ip/gigantic_mux +displayport_v7_0_24=$RDI_DATADIR/xsim/ip/displayport_v7_0_24 +msm_adapters=$RDI_DATADIR/xsim/ip/msm_adapters +v_frmbuf_wr_v2_2_10=$RDI_DATADIR/xsim/ip/v_frmbuf_wr_v2_2_10 +fast_adapter_v1_0_8=$RDI_DATADIR/xsim/ip/fast_adapter_v1_0_8 +rst_vip_v1_0_6=$RDI_DATADIR/xsim/ip/rst_vip_v1_0_6 +v_hdmi_phy1_v1_0_12=$RDI_DATADIR/xsim/ip/v_hdmi_phy1_v1_0_12 +pcie_qdma_mailbox_v1_0_5=$RDI_DATADIR/xsim/ip/pcie_qdma_mailbox_v1_0_5 +pr_decoupler_v1_0_11=$RDI_DATADIR/xsim/ip/pr_decoupler_v1_0_11 +v_hdmi_tx1_v1_0_8=$RDI_DATADIR/xsim/ip/v_hdmi_tx1_v1_0_8 +processing_system7_v5_5_6=$RDI_DATADIR/xsim/ip/processing_system7_v5_5_6 +axis_cap_ctrl_v1_0_1=$RDI_DATADIR/xsim/ip/axis_cap_ctrl_v1_0_1 +common_rpc_v1=$RDI_DATADIR/xsim/ip/common_rpc_v1 +xtlm_ipc_v1_0=$RDI_DATADIR/xsim/ip/xtlm_ipc_v1_0 +v_tpg_v8_1_10=$RDI_DATADIR/xsim/ip/v_tpg_v8_1_10 +v_hcresampler_v1_1_11=$RDI_DATADIR/xsim/ip/v_hcresampler_v1_1_11 +axi_interface_monitor_v1_1_0=$RDI_DATADIR/xsim/ip/axi_interface_monitor_v1_1_0 +axi_intc_v4_1=$RDI_DATADIR/xsim/ip/axi_intc_v4_1 +mammoth_transcode_v1_0_2=$RDI_DATADIR/xsim/ip/mammoth_transcode_v1_0_2 +axi_timebase_wdt_v3_0_23=$RDI_DATADIR/xsim/ip/axi_timebase_wdt_v3_0_23 +floating_point_v7_0_23=$RDI_DATADIR/xsim/ip/floating_point_v7_0_23 +displayport_v9_0_9=$RDI_DATADIR/xsim/ip/displayport_v9_0_9 +noc_hbm_v1_0_0=$RDI_DATADIR/xsim/ip/noc_hbm_v1_0_0 +versal_cips_ps_vip_v1_0_9=$RDI_DATADIR/xsim/ip/versal_cips_ps_vip_v1_0_9 +amm_axi_bridge_v1_0_17=$RDI_DATADIR/xsim/ip/amm_axi_bridge_v1_0_17 +v_vid_gt_bridge_v2_0_5=$RDI_DATADIR/xsim/ip/v_vid_gt_bridge_v2_0_5 +v_gamma_lut_v1_1_11=$RDI_DATADIR/xsim/ip/v_gamma_lut_v1_1_11 +rld3_pl_v1_0_14=$RDI_DATADIR/xsim/ip/rld3_pl_v1_0_14 +l_ethernet_v3_3_10=$RDI_DATADIR/xsim/ip/l_ethernet_v3_3_10 +ernic_v4_0_3=$RDI_DATADIR/xsim/ip/ernic_v4_0_3 +fec_5g_common_v1_1_4=$RDI_DATADIR/xsim/ip/fec_5g_common_v1_1_4 +sim_qdma_sc_v1_0=$RDI_DATADIR/xsim/ip/sim_qdma_sc_v1_0 +dfx_bitstream_monitor_v1_0_5=$RDI_DATADIR/xsim/ip/dfx_bitstream_monitor_v1_0_5 +axi_mmu_v2_1_29=$RDI_DATADIR/xsim/ip/axi_mmu_v2_1_29 +v_sdi_rx_vid_bridge_v2_0_2=$RDI_DATADIR/xsim/ip/v_sdi_rx_vid_bridge_v2_0_2 +v_csc_v1_1_11=$RDI_DATADIR/xsim/ip/v_csc_v1_1_11 +usxgmii_v1_2_17=$RDI_DATADIR/xsim/ip/usxgmii_v1_2_17 +trace_s2mm_v2_0_1=$RDI_DATADIR/xsim/ip/trace_s2mm_v2_0_1 +ieee802d3_rs_fec_v2_0_22=$RDI_DATADIR/xsim/ip/ieee802d3_rs_fec_v2_0_22 +v_hdmi_tx_v3_0_4=$RDI_DATADIR/xsim/ip/v_hdmi_tx_v3_0_4 +ldpc_5gnr_v1_0_3=$RDI_DATADIR/xsim/ip/ldpc_5gnr_v1_0_3 +rama_v1_1_17_lib=$RDI_DATADIR/xsim/ip/rama_v1_1_17_lib +rs_decoder_v9_0_22=$RDI_DATADIR/xsim/ip/rs_decoder_v9_0_22 +ieee802d3_400g_rs_fec_v3_0_2=$RDI_DATADIR/xsim/ip/ieee802d3_400g_rs_fec_v3_0_2 +xscl=$RDI_DATADIR/xsim/ip/xscl +iomodule_v3_1_10=$RDI_DATADIR/xsim/ip/iomodule_v3_1_10 +axis_mem_v1_0_2=$RDI_DATADIR/xsim/ip/axis_mem_v1_0_2 +axi_tft_v2_0_28=$RDI_DATADIR/xsim/ip/axi_tft_v2_0_28 +fc32_rs_fec_v1_0_27=$RDI_DATADIR/xsim/ip/fc32_rs_fec_v1_0_27 +axi_remapper_tx_v1_0_2=$RDI_DATADIR/xsim/ip/axi_remapper_tx_v1_0_2 +dfx_axi_shutdown_manager_v1_0_3=$RDI_DATADIR/xsim/ip/dfx_axi_shutdown_manager_v1_0_3 +util_vector_logic_v2_0_4=$RDI_DATADIR/xsim/ip/util_vector_logic_v2_0_4 +axis_ila_intf_v1_0_2=$RDI_DATADIR/xsim/ip/axis_ila_intf_v1_0_2 +axi_amm_bridge_v1_0_21=$RDI_DATADIR/xsim/ip/axi_amm_bridge_v1_0_21 +xpm_cdc_gen_v1_0_4=$RDI_DATADIR/xsim/ip/xpm_cdc_gen_v1_0_4 +c_accum_v12_0_18=$RDI_DATADIR/xsim/ip/c_accum_v12_0_18 +cmac_v2_6_15=$RDI_DATADIR/xsim/ip/cmac_v2_6_15 +axi_firewall_v1_2_6=$RDI_DATADIR/xsim/ip/axi_firewall_v1_2_6 +dft_v4_2_8=$RDI_DATADIR/xsim/ip/dft_v4_2_8 +ernic_v3_1_5=$RDI_DATADIR/xsim/ip/ernic_v3_1_5 +xsdbs_v1_0_4=$RDI_DATADIR/xsim/ip/xsdbs_v1_0_4 +stm_v1_0=$RDI_DATADIR/xsim/ip/stm_v1_0 +axi_timer_v2_0_33=$RDI_DATADIR/xsim/ip/axi_timer_v2_0_33 +lmb_v10_v3_0_14=$RDI_DATADIR/xsim/ip/lmb_v10_v3_0_14 +v_deinterlacer_v5_1_4=$RDI_DATADIR/xsim/ip/v_deinterlacer_v5_1_4 +axis_data_fifo_v1_1_32=$RDI_DATADIR/xsim/ip/axis_data_fifo_v1_1_32 +hw_trace=$RDI_DATADIR/xsim/ip/hw_trace +sim_xdma_sc_v1=$RDI_DATADIR/xsim/ip/sim_xdma_sc_v1 +axi_vip_v1_1_17=$RDI_DATADIR/xsim/ip/axi_vip_v1_1_17 +mipi_dphy_v4_3_11=$RDI_DATADIR/xsim/ip/mipi_dphy_v4_3_11 +ieee802d3_50g_rs_fec_v2_0_17=$RDI_DATADIR/xsim/ip/ieee802d3_50g_rs_fec_v2_0_17 +xdfe_equalizer_v1_0_9=$RDI_DATADIR/xsim/ip/xdfe_equalizer_v1_0_9 +flexo_100g_rs_fec_v1_0_28=$RDI_DATADIR/xsim/ip/flexo_100g_rs_fec_v1_0_28 +v_uhdsdi_audio_v2_0_8=$RDI_DATADIR/xsim/ip/v_uhdsdi_audio_v2_0_8 +v_tc_v6_1_14=$RDI_DATADIR/xsim/ip/v_tc_v6_1_14 +ddr4_pl_phy_v1_0_2=$RDI_DATADIR/xsim/ip/ddr4_pl_phy_v1_0_2 +sem_v4_1_15=$RDI_DATADIR/xsim/ip/sem_v4_1_15 +c_shift_ram_v12_0_17=$RDI_DATADIR/xsim/ip/c_shift_ram_v12_0_17 +lib_pkg_v1_0_4=$RDI_DATADIR/xsim/ip/lib_pkg_v1_0_4 +bs_switch_v1_0_4=$RDI_DATADIR/xsim/ip/bs_switch_v1_0_4 +shell_utils_msp432_bsl_crc_gen_v1_0_2=$RDI_DATADIR/xsim/ip/shell_utils_msp432_bsl_crc_gen_v1_0_2 +axis_dbg_sync_v1_0_1=$RDI_DATADIR/xsim/ip/axis_dbg_sync_v1_0_1 +high_speed_selectio_wiz_v3_6_9=$RDI_DATADIR/xsim/ip/high_speed_selectio_wiz_v3_6_9 +emc_common_v3_0_7=$RDI_DATADIR/xsim/ip/emc_common_v3_0_7 +fir_compiler_v7_2_22=$RDI_DATADIR/xsim/ip/fir_compiler_v7_2_22 +microblaze_mcs_v2_3_7=$RDI_DATADIR/xsim/ip/microblaze_mcs_v2_3_7 +oran_radio_if_v3_2_0=$RDI_DATADIR/xsim/ip/oran_radio_if_v3_2_0 +i2s_transmitter_v1_0_8=$RDI_DATADIR/xsim/ip/i2s_transmitter_v1_0_8 +floating_point_v7_1_18=$RDI_DATADIR/xsim/ip/floating_point_v7_1_18 +sim_trig_v1_0_12=$RDI_DATADIR/xsim/ip/sim_trig_v1_0_12 +hbm2e_pl_v1_0_1=$RDI_DATADIR/xsim/ip/hbm2e_pl_v1_0_1 +axis_protocol_checker_v2_0_15=$RDI_DATADIR/xsim/ip/axis_protocol_checker_v2_0_15 +vitis_deadlock_detector_v1_0_2=$RDI_DATADIR/xsim/ip/vitis_deadlock_detector_v1_0_2 +axi_msg_v1_0_11=$RDI_DATADIR/xsim/ip/axi_msg_v1_0_11 +c_compare_v12_0_9=$RDI_DATADIR/xsim/ip/c_compare_v12_0_9 +c_mux_bus_v12_0_9=$RDI_DATADIR/xsim/ip/c_mux_bus_v12_0_9 +xsdbm_v3_0_2=$RDI_DATADIR/xsim/ip/xsdbm_v3_0_2 +rld3_pl_phy_v1_0_2=$RDI_DATADIR/xsim/ip/rld3_pl_phy_v1_0_2 +mpram_v1_0_4=$RDI_DATADIR/xsim/ip/mpram_v1_0_4 +oddr_v1_0_4=$RDI_DATADIR/xsim/ip/oddr_v1_0_4 +bs_mux_v1_0_1=$RDI_DATADIR/xsim/ip/bs_mux_v1_0_1 +ptp_1588_timer_syncer_v2_0_6=$RDI_DATADIR/xsim/ip/ptp_1588_timer_syncer_v2_0_6 +dfx_controller_v1_0_7=$RDI_DATADIR/xsim/ip/dfx_controller_v1_0_7 +noc_ncrb_v1_0_0=$RDI_DATADIR/xsim/ip/noc_ncrb_v1_0_0 +rs_toolbox_v9_0_13=$RDI_DATADIR/xsim/ip/rs_toolbox_v9_0_13 +pc_cfr_v8_0_2=$RDI_DATADIR/xsim/ip/pc_cfr_v8_0_2 +multi_channel_25g_rs_fec_v1_0_26=$RDI_DATADIR/xsim/ip/multi_channel_25g_rs_fec_v1_0_26 +lmb_bram_if_cntlr_v4_0_24=$RDI_DATADIR/xsim/ip/lmb_bram_if_cntlr_v4_0_24 +hdcp_keymngmt_blk_v1_0_2=$RDI_DATADIR/xsim/ip/hdcp_keymngmt_blk_v1_0_2 +axi_lite_ipif_v3_0=$RDI_DATADIR/xsim/ip/axi_lite_ipif_v3_0 +compact_gt_v1_0_17=$RDI_DATADIR/xsim/ip/compact_gt_v1_0_17 +v_vcresampler_v1_1_11=$RDI_DATADIR/xsim/ip/v_vcresampler_v1_1_11 +mipi_dsi2_rx_ctrl_v1_0_0=$RDI_DATADIR/xsim/ip/mipi_dsi2_rx_ctrl_v1_0_0 +axi_quad_spi_v3_2_30=$RDI_DATADIR/xsim/ip/axi_quad_spi_v3_2_30 +div_gen_v5_1_22=$RDI_DATADIR/xsim/ip/div_gen_v5_1_22 +v_frmbuf_rd_v2_2_10=$RDI_DATADIR/xsim/ip/v_frmbuf_rd_v2_2_10 +can_v5_1_3=$RDI_DATADIR/xsim/ip/can_v5_1_3 +axi_pcie3_v3_0_30=$RDI_DATADIR/xsim/ip/axi_pcie3_v3_0_30 +emb_mem_gen_v1_0_9=$RDI_DATADIR/xsim/ip/emb_mem_gen_v1_0_9 +noc2_xbr2x4_v1_0_0=$RDI_DATADIR/xsim/ip/noc2_xbr2x4_v1_0_0 +xbip_counter_v3_0_9=$RDI_DATADIR/xsim/ip/xbip_counter_v3_0_9 +axi_jtag_v1_0_2=$RDI_DATADIR/xsim/ip/axi_jtag_v1_0_2 +tmr_manager_v1_0_12=$RDI_DATADIR/xsim/ip/tmr_manager_v1_0_12 +noc_nmu_sim_v1_0_0=$RDI_DATADIR/xsim/ip/noc_nmu_sim_v1_0_0 +mipi_csi2_rx_ctrl_v1_0_10=$RDI_DATADIR/xsim/ip/mipi_csi2_rx_ctrl_v1_0_10 +axi_bram_ctrl_v4_0_15=$RDI_DATADIR/xsim/ip/axi_bram_ctrl_v4_0_15 +axi_gpio_v2_0_33=$RDI_DATADIR/xsim/ip/axi_gpio_v2_0_33 +rs_encoder_v9_0_21=$RDI_DATADIR/xsim/ip/rs_encoder_v9_0_21 +rwd_tlmmodel_v1=$RDI_DATADIR/xsim/ip/rwd_tlmmodel_v1 +axi_bram_ctrl_v4_1_10=$RDI_DATADIR/xsim/ip/axi_bram_ctrl_v4_1_10 +uram_rd_back_v1_0_4=$RDI_DATADIR/xsim/ip/uram_rd_back_v1_0_4 +lib_fifo_v1_0_19=$RDI_DATADIR/xsim/ip/lib_fifo_v1_0_19 +canfd_v3_0_10=$RDI_DATADIR/xsim/ip/canfd_v3_0_10 +hdcp22_rng_v1_0_3=$RDI_DATADIR/xsim/ip/hdcp22_rng_v1_0_3 +xfft_v9_1_12=$RDI_DATADIR/xsim/ip/xfft_v9_1_12 +axi_memory_init_v1_0_12=$RDI_DATADIR/xsim/ip/axi_memory_init_v1_0_12 +common_cpp_v1_0=$RDI_DATADIR/xsim/ip/common_cpp_v1_0 +ai_pl_trig=$RDI_DATADIR/xsim/ip/ai_pl_trig +c_reg_fd_v12_0_9=$RDI_DATADIR/xsim/ip/c_reg_fd_v12_0_9 +axi_mm2s_mapper_v1_1_30=$RDI_DATADIR/xsim/ip/axi_mm2s_mapper_v1_1_30 +ldpc_v2_0_15=$RDI_DATADIR/xsim/ip/ldpc_v2_0_15 +sim_cpu_v1_0=$RDI_DATADIR/xsim/ip/sim_cpu_v1_0 +axi_data_fifo_v2_1_30=$RDI_DATADIR/xsim/ip/axi_data_fifo_v2_1_30 +g709_fec_v2_4_10=$RDI_DATADIR/xsim/ip/g709_fec_v2_4_10 +axi_mcdma_v1_1_12=$RDI_DATADIR/xsim/ip/axi_mcdma_v1_1_12 +axi_lmb_bridge_v1_0_3=$RDI_DATADIR/xsim/ip/axi_lmb_bridge_v1_0_3 +lte_fft_v2_1_10=$RDI_DATADIR/xsim/ip/lte_fft_v2_1_10 +axi_interconnect_v1_7_23=$RDI_DATADIR/xsim/ip/axi_interconnect_v1_7_23 +axi_dwidth_converter_v2_1_31=$RDI_DATADIR/xsim/ip/axi_dwidth_converter_v2_1_31 +axi_usb2_device_v5_0_32=$RDI_DATADIR/xsim/ip/axi_usb2_device_v5_0_32 +axi_hwicap_v3_0_35=$RDI_DATADIR/xsim/ip/axi_hwicap_v3_0_35 +ldpc_5gnr_lite_v1_0_2=$RDI_DATADIR/xsim/ip/ldpc_5gnr_lite_v1_0_2 +fifo_generator_v13_1_5=$RDI_DATADIR/xsim/ip/fifo_generator_v13_1_5 +axi_protocol_checker_v2_0_17=$RDI_DATADIR/xsim/ip/axi_protocol_checker_v2_0_17 +c_counter_binary_v12_0_19=$RDI_DATADIR/xsim/ip/c_counter_binary_v12_0_19 +axis_ila_pp_v1_0_2=$RDI_DATADIR/xsim/ip/axis_ila_pp_v1_0_2 +mem_tg_v1_0_13=$RDI_DATADIR/xsim/ip/mem_tg_v1_0_13 +xbip_utils_v3_0_13=$RDI_DATADIR/xsim/ip/xbip_utils_v3_0_13 +aie_xtlm_v1_0_0=$RDI_DATADIR/xsim/ip/aie_xtlm_v1_0_0 +xtlm_ap_ctrl_v1_0=$RDI_DATADIR/xsim/ip/xtlm_ap_ctrl_v1_0 +v_vid_in_axi4s_v4_0_11=$RDI_DATADIR/xsim/ip/v_vid_in_axi4s_v4_0_11 +cmac_usplus_v3_1_17=$RDI_DATADIR/xsim/ip/cmac_usplus_v3_1_17 +xdfe_common_v1_0_3=$RDI_DATADIR/xsim/ip/xdfe_common_v1_0_3 +viterbi_v9_1_17=$RDI_DATADIR/xsim/ip/viterbi_v9_1_17 +xdfe_nr_prach_v2_0_3=$RDI_DATADIR/xsim/ip/xdfe_nr_prach_v2_0_3 +v_smpte_sdi_v3_0_11=$RDI_DATADIR/xsim/ip/v_smpte_sdi_v3_0_11 +mdm_v3_2=$RDI_DATADIR/xsim/ip/mdm_v3_2 +clk_vip_v1_0_4=$RDI_DATADIR/xsim/ip/clk_vip_v1_0_4 +mdm_v3_2_26=$RDI_DATADIR/xsim/ip/mdm_v3_2_26 +xtlm_trace_model_v1_0=$RDI_DATADIR/xsim/ip/xtlm_trace_model_v1_0 +xbip_dsp48_multadd_v3_0_9=$RDI_DATADIR/xsim/ip/xbip_dsp48_multadd_v3_0_9 +noc2_nsu_v1_0_1=$RDI_DATADIR/xsim/ip/noc2_nsu_v1_0_1 +timer_sync_1588_v1_2_5=$RDI_DATADIR/xsim/ip/timer_sync_1588_v1_2_5 +axis_ila_ct_v1_0_1=$RDI_DATADIR/xsim/ip/axis_ila_ct_v1_0_1 +dcmac_v2_4_0=$RDI_DATADIR/xsim/ip/dcmac_v2_4_0 +v_dp_axi4s_vid_out_v1_0_8=$RDI_DATADIR/xsim/ip/v_dp_axi4s_vid_out_v1_0_8 +xbip_dsp48_acc_v3_0_9=$RDI_DATADIR/xsim/ip/xbip_dsp48_acc_v3_0_9 +noc2_xbr4x2_v1_0_0=$RDI_DATADIR/xsim/ip/noc2_xbr4x2_v1_0_0 +sd_fec_v1_1_14=$RDI_DATADIR/xsim/ip/sd_fec_v1_1_14 +xbip_accum_v3_0_9=$RDI_DATADIR/xsim/ip/xbip_accum_v3_0_9 +displayport_v8_1_9=$RDI_DATADIR/xsim/ip/displayport_v8_1_9 +ilknf_v1_3_4=$RDI_DATADIR/xsim/ip/ilknf_v1_3_4 +v_letterbox_v1_1_11=$RDI_DATADIR/xsim/ip/v_letterbox_v1_1_11 +iomodule_v3_0=$RDI_DATADIR/xsim/ip/iomodule_v3_0 +dbg_intf=$RDI_DATADIR/xsim/ip/dbg_intf +cpm5_v1_0_16=$RDI_DATADIR/xsim/ip/cpm5_v1_0_16 +ieee802d3_25g_rs_fec_v1_0_30=$RDI_DATADIR/xsim/ip/ieee802d3_25g_rs_fec_v1_0_30 +jesd204_v7_2_20=$RDI_DATADIR/xsim/ip/jesd204_v7_2_20 +clk_gen_sim_v1_0_4=$RDI_DATADIR/xsim/ip/clk_gen_sim_v1_0_4 +g709_rs_decoder_v2_2_14=$RDI_DATADIR/xsim/ip/g709_rs_decoder_v2_2_14 +cpri_v8_11_20=$RDI_DATADIR/xsim/ip/cpri_v8_11_20 +ieee802d3_200g_rs_fec_v2_0_11=$RDI_DATADIR/xsim/ip/ieee802d3_200g_rs_fec_v2_0_11 +v_warp_init_v1_1_4=$RDI_DATADIR/xsim/ip/v_warp_init_v1_1_4 +v_hscaler_v1_1_11=$RDI_DATADIR/xsim/ip/v_hscaler_v1_1_11 +spdif_v2_0_29=$RDI_DATADIR/xsim/ip/spdif_v2_0_29 +func_emu_util_v1_0=$RDI_DATADIR/xsim/ip/func_emu_util_v1_0 +axi_uart16550_v2_0_33=$RDI_DATADIR/xsim/ip/axi_uart16550_v2_0_33 +axi_clock_converter_v2_1_30=$RDI_DATADIR/xsim/ip/axi_clock_converter_v2_1_30 +dprx_v1_0_4=$RDI_DATADIR/xsim/ip/dprx_v1_0_4 +mrmac_v2_3_0=$RDI_DATADIR/xsim/ip/mrmac_v2_3_0 +cic_compiler_v4_0_19=$RDI_DATADIR/xsim/ip/cic_compiler_v4_0_19 +c_gate_bit_v12_0_9=$RDI_DATADIR/xsim/ip/c_gate_bit_v12_0_9 +noc_sc_v1_0_0_legacy=$RDI_DATADIR/xsim/ip/noc_sc_v1_0_0_legacy +ten_gig_eth_pcs_pma_v6_0_27=$RDI_DATADIR/xsim/ip/ten_gig_eth_pcs_pma_v6_0_27 +xdfe_cc_filter_v1_1_4=$RDI_DATADIR/xsim/ip/xdfe_cc_filter_v1_1_4 +axi_crossbar_v2_1_32=$RDI_DATADIR/xsim/ip/axi_crossbar_v2_1_32 +axis_itct_v1_0_1=$RDI_DATADIR/xsim/ip/axis_itct_v1_0_1 +xbip_pipe_v3_0_9=$RDI_DATADIR/xsim/ip/xbip_pipe_v3_0_9 +tsn_temac_v1_0_11=$RDI_DATADIR/xsim/ip/tsn_temac_v1_0_11 +lib_srl_fifo_v1_0_4=$RDI_DATADIR/xsim/ip/lib_srl_fifo_v1_0_4 +ecc_v2_0_16=$RDI_DATADIR/xsim/ip/ecc_v2_0_16 +mutex_v2_1_13=$RDI_DATADIR/xsim/ip/mutex_v2_1_13 +lmb_bram_if_cntlr_v4_0=$RDI_DATADIR/xsim/ip/lmb_bram_if_cntlr_v4_0 +ahblite_axi_bridge_v3_0_26=$RDI_DATADIR/xsim/ip/ahblite_axi_bridge_v3_0_26 +tmr_inject_v1_0_6=$RDI_DATADIR/xsim/ip/tmr_inject_v1_0_6 +qdriv_pl_phy_v1_0_2=$RDI_DATADIR/xsim/ip/qdriv_pl_phy_v1_0_2 +tcc_decoder_3gppmm_v2_0_27=$RDI_DATADIR/xsim/ip/tcc_decoder_3gppmm_v2_0_27 +ai_noc=$RDI_DATADIR/xsim/ip/ai_noc +util_idelay_ctrl_v1_0_4=$RDI_DATADIR/xsim/ip/util_idelay_ctrl_v1_0_4 +noc2_nps_v1_0_0=$RDI_DATADIR/xsim/ip/noc2_nps_v1_0_0 +etrnic_v1_1_8=$RDI_DATADIR/xsim/ip/etrnic_v1_1_8 +axi_ahblite_bridge_v3_0_28=$RDI_DATADIR/xsim/ip/axi_ahblite_bridge_v3_0_28 +ieee802d3_50g_rs_fec_v1_0_24=$RDI_DATADIR/xsim/ip/ieee802d3_50g_rs_fec_v1_0_24 +noc_hbm_nmu_sim_v1_0_0=$RDI_DATADIR/xsim/ip/noc_hbm_nmu_sim_v1_0_0 +noc_npp_rptr_v1_0_0=$RDI_DATADIR/xsim/ip/noc_npp_rptr_v1_0_0 +dfx_decoupler_v1_0_9=$RDI_DATADIR/xsim/ip/dfx_decoupler_v1_0_9 +dsp_macro_v1_0_6=$RDI_DATADIR/xsim/ip/dsp_macro_v1_0_6 +cpm5n_v1_0_8=$RDI_DATADIR/xsim/ip/cpm5n_v1_0_8 +axi_dma_v7_1_32=$RDI_DATADIR/xsim/ip/axi_dma_v7_1_32 +sim_ipc_multi_intf_v1_0=$RDI_DATADIR/xsim/ip/sim_ipc_multi_intf_v1_0 +hdcp_v1_0_5=$RDI_DATADIR/xsim/ip/hdcp_v1_0_5 +axi_epc_v2_0_34=$RDI_DATADIR/xsim/ip/axi_epc_v2_0_34 +tmr_comparator_v1_0_7=$RDI_DATADIR/xsim/ip/tmr_comparator_v1_0_7 +v_warp_filter_v1_1_4=$RDI_DATADIR/xsim/ip/v_warp_filter_v1_1_4 +ai_pl=$RDI_DATADIR/xsim/ip/ai_pl +xdfe_nlf_v1_1_1=$RDI_DATADIR/xsim/ip/xdfe_nlf_v1_1_1 +v_scenechange_v1_1_6=$RDI_DATADIR/xsim/ip/v_scenechange_v1_1_6 +vfb_v1_0_25=$RDI_DATADIR/xsim/ip/vfb_v1_0_25 +axis_interconnect_v1_1_23=$RDI_DATADIR/xsim/ip/axis_interconnect_v1_1_23 +xlconstant_v1_1_9=$RDI_DATADIR/xsim/ip/xlconstant_v1_1_9 +adc_dac_if_phy_v1_0_0=$RDI_DATADIR/xsim/ip/adc_dac_if_phy_v1_0_0 +mult_gen_v12_0_21=$RDI_DATADIR/xsim/ip/mult_gen_v12_0_21 +i2s_receiver_v1_0_8=$RDI_DATADIR/xsim/ip/i2s_receiver_v1_0_8 +qdriv_pl_v1_0_13=$RDI_DATADIR/xsim/ip/qdriv_pl_v1_0_13 +xbip_dsp48_wrapper_v3_0_6=$RDI_DATADIR/xsim/ip/xbip_dsp48_wrapper_v3_0_6 +lut_buffer_v2_0_1=$RDI_DATADIR/xsim/ip/lut_buffer_v2_0_1 +vid_phy_controller_v2_2_18=$RDI_DATADIR/xsim/ip/vid_phy_controller_v2_2_18 +advanced_io_wizard_phy_v1_0_3=$RDI_DATADIR/xsim/ip/advanced_io_wizard_phy_v1_0_3 +uhdsdi_gt_v2_1_4=$RDI_DATADIR/xsim/ip/uhdsdi_gt_v2_1_4 +axi_dbg_hub=$RDI_DATADIR/xsim/ip/axi_dbg_hub +anlt_subcore_ip_v1_0_2=$RDI_DATADIR/xsim/ip/anlt_subcore_ip_v1_0_2 +xxv_ethernet_v4_1_10=$RDI_DATADIR/xsim/ip/xxv_ethernet_v4_1_10 +cdcam_v1_1_0=$RDI_DATADIR/xsim/ip/cdcam_v1_1_0 +pci32_v5_0_13=$RDI_DATADIR/xsim/ip/pci32_v5_0_13 +v_mix_v5_2_9=$RDI_DATADIR/xsim/ip/v_mix_v5_2_9 +pci64_v5_0_12=$RDI_DATADIR/xsim/ip/pci64_v5_0_12 +in_system_ibert_v1_0_22=$RDI_DATADIR/xsim/ip/in_system_ibert_v1_0_22 +proc_sys_reset_v5_0_15=$RDI_DATADIR/xsim/ip/proc_sys_reset_v5_0_15 +axis_dwidth_converter_v1_1_30=$RDI_DATADIR/xsim/ip/axis_dwidth_converter_v1_1_30 +sim_ddr_v1_0=$RDI_DATADIR/xsim/ip/sim_ddr_v1_0 +sim_qdma_cpp_v1_0=$RDI_DATADIR/xsim/ip/sim_qdma_cpp_v1_0 +axi_traffic_gen_v3_0_17=$RDI_DATADIR/xsim/ip/axi_traffic_gen_v3_0_17 +v_hdmi_rx_v3_0_4=$RDI_DATADIR/xsim/ip/v_hdmi_rx_v3_0_4 +xdfe_resampler_v1_0_9=$RDI_DATADIR/xsim/ip/xdfe_resampler_v1_0_9 +zynq_ultra_ps_e_v3_3_12=$RDI_DATADIR/xsim/ip/zynq_ultra_ps_e_v3_3_12 +axi_i3c_v1_0_0=$RDI_DATADIR/xsim/ip/axi_i3c_v1_0_0 +g709_rs_encoder_v2_2_12=$RDI_DATADIR/xsim/ip/g709_rs_encoder_v2_2_12 +xpm=$RDI_DATADIR/xsim/ip/xpm +dptx_v1_0_4=$RDI_DATADIR/xsim/ip/dptx_v1_0_4 +v_axi4s_remap_v1_1_10=$RDI_DATADIR/xsim/ip/v_axi4s_remap_v1_1_10 +tri_mode_ethernet_mac_v9_0_32=$RDI_DATADIR/xsim/ip/tri_mode_ethernet_mac_v9_0_32 +xbip_bram18k_v3_0_9=$RDI_DATADIR/xsim/ip/xbip_bram18k_v3_0_9 +shell_utils_build_info_v2_0_0=$RDI_DATADIR/xsim/ip/shell_utils_build_info_v2_0_0 +cordic_v6_0_22=$RDI_DATADIR/xsim/ip/cordic_v6_0_22 +sim_xdma_cpp_v1=$RDI_DATADIR/xsim/ip/sim_xdma_cpp_v1 +axi_hbicap_v1_0_7=$RDI_DATADIR/xsim/ip/axi_hbicap_v1_0_7 +zynq_ultra_ps_e_vip_v1_0_17=$RDI_DATADIR/xsim/ip/zynq_ultra_ps_e_vip_v1_0_17 +gtwizard_ultrascale_v1_5_4=$RDI_DATADIR/xsim/ip/gtwizard_ultrascale_v1_5_4 +remote_port_c_v4=$RDI_DATADIR/xsim/ip/remote_port_c_v4 +axi_vdma_v6_3_19=$RDI_DATADIR/xsim/ip/axi_vdma_v6_3_19 +x5io_wizard_phy_v1_0_1=$RDI_DATADIR/xsim/ip/x5io_wizard_phy_v1_0_1 +tcc_encoder_3gpp_v5_0_22=$RDI_DATADIR/xsim/ip/tcc_encoder_3gpp_v5_0_22 +axis_combiner_v1_1_29=$RDI_DATADIR/xsim/ip/axis_combiner_v1_1_29 +microblaze_v9_5_5=$RDI_DATADIR/xsim/ip/microblaze_v9_5_5 +advanced_io_wizard_v1_0_13=$RDI_DATADIR/xsim/ip/advanced_io_wizard_v1_0_13 +lib_cdc_v1_0_3=$RDI_DATADIR/xsim/ip/lib_cdc_v1_0_3 +axis_ila_adv_trig_v1_0_1=$RDI_DATADIR/xsim/ip/axis_ila_adv_trig_v1_0_1 +qdma_v5_0_9=$RDI_DATADIR/xsim/ip/qdma_v5_0_9 +ddr4_pl_v1_0_14=$RDI_DATADIR/xsim/ip/ddr4_pl_v1_0_14 +noc_mc_ddr5_phy_v1_0_1=$RDI_DATADIR/xsim/ip/noc_mc_ddr5_phy_v1_0_1 +xtlm_simple_interconnect_v1_0=$RDI_DATADIR/xsim/ip/xtlm_simple_interconnect_v1_0 +axi_sg_v4_1_18=$RDI_DATADIR/xsim/ip/axi_sg_v4_1_18 +xdfe_cc_mixer_v2_0_4=$RDI_DATADIR/xsim/ip/xdfe_cc_mixer_v2_0_4 +processing_system7_vip_v1_0_19=$RDI_DATADIR/xsim/ip/processing_system7_vip_v1_0_19 +mipi_dsi_tx_ctrl_v1_0_9=$RDI_DATADIR/xsim/ip/mipi_dsi_tx_ctrl_v1_0_9 +microblaze_riscv_v1_0_2=$RDI_DATADIR/xsim/ip/microblaze_riscv_v1_0_2 +cpm4_v1_0_16=$RDI_DATADIR/xsim/ip/cpm4_v1_0_16 +xbip_multadd_v3_0_20=$RDI_DATADIR/xsim/ip/xbip_multadd_v3_0_20 +axis_data_fifo_v2_0_13=$RDI_DATADIR/xsim/ip/axis_data_fifo_v2_0_13 +ltlib_v1_0_2=$RDI_DATADIR/xsim/ip/ltlib_v1_0_2 +axis_switch_sc_v1_1=$RDI_DATADIR/xsim/ip/axis_switch_sc_v1_1 +sim_clk_gen_v1_0_4=$RDI_DATADIR/xsim/ip/sim_clk_gen_v1_0_4 +xdfe_fft_v1_0_7=$RDI_DATADIR/xsim/ip/xdfe_fft_v1_0_7 +hsdp_trace_v2_0_2=$RDI_DATADIR/xsim/ip/hsdp_trace_v2_0_2 +blk_mem_gen_v8_4_8=$RDI_DATADIR/xsim/ip/blk_mem_gen_v8_4_8 +cam_blk_lib_v1_1_0=$RDI_DATADIR/xsim/ip/cam_blk_lib_v1_1_0 +tmr_voter_v1_0_6=$RDI_DATADIR/xsim/ip/tmr_voter_v1_0_6 +util_ff_v1_0_3=$RDI_DATADIR/xsim/ip/util_ff_v1_0_3 +interrupt_control_v3_1_5=$RDI_DATADIR/xsim/ip/interrupt_control_v3_1_5 +xdfe_ofdm_v2_1_0=$RDI_DATADIR/xsim/ip/xdfe_ofdm_v2_1_0 +audio_clock_recovery_unit_v1_0_4=$RDI_DATADIR/xsim/ip/audio_clock_recovery_unit_v1_0_4 +ten_gig_eth_mac_v15_1_12=$RDI_DATADIR/xsim/ip/ten_gig_eth_mac_v15_1_12 +axi_protocol_converter_v2_1_31=$RDI_DATADIR/xsim/ip/axi_protocol_converter_v2_1_31 +xbip_dsp48_mult_v3_0_9=$RDI_DATADIR/xsim/ip/xbip_dsp48_mult_v3_0_9 +tmr_sem_v1_0_26=$RDI_DATADIR/xsim/ip/tmr_sem_v1_0_26 +v_frmbuf_rd_v2_4_3=$RDI_DATADIR/xsim/ip/v_frmbuf_rd_v2_4_3 +cmpy_v6_0_24=$RDI_DATADIR/xsim/ip/cmpy_v6_0_24 +ta_dma_v1_0_15=$RDI_DATADIR/xsim/ip/ta_dma_v1_0_15 +v_tpg_v8_0_14=$RDI_DATADIR/xsim/ip/v_tpg_v8_0_14 +axi_tlm_ext_v1_0=$RDI_DATADIR/xsim/ip/axi_tlm_ext_v1_0 +axi_iic_v2_1_7=$RDI_DATADIR/xsim/ip/axi_iic_v2_1_7 +c_addsub_v12_0_18=$RDI_DATADIR/xsim/ip/c_addsub_v12_0_18 +audio_tpg_v1_0_2=$RDI_DATADIR/xsim/ip/audio_tpg_v1_0_2 +axi_tg_sc_v1_0=$RDI_DATADIR/xsim/ip/axi_tg_sc_v1_0 +v_vid_sdi_tx_bridge_v2_0_2=$RDI_DATADIR/xsim/ip/v_vid_sdi_tx_bridge_v2_0_2 +noc_nsu_sim_v1_0_0=$RDI_DATADIR/xsim/ip/noc_nsu_sim_v1_0_0 +axi_register_slice_v2_1_31=$RDI_DATADIR/xsim/ip/axi_register_slice_v2_1_31 +axis_switch_v1_1_31=$RDI_DATADIR/xsim/ip/axis_switch_v1_1_31 +axi_stream_monitor_v1_1_1=$RDI_DATADIR/xsim/ip/axi_stream_monitor_v1_1_1 +v_uhdsdi_vidgen_v1_0_3=$RDI_DATADIR/xsim/ip/v_uhdsdi_vidgen_v1_0_3 +bscan_jtag=$RDI_DATADIR/xsim/ip/bscan_jtag +audio_formatter_v1_0_13=$RDI_DATADIR/xsim/ip/audio_formatter_v1_0_13 +axis_vio_v1_0_11=$RDI_DATADIR/xsim/ip/axis_vio_v1_0_11 +interlaken_v2_4_17=$RDI_DATADIR/xsim/ip/interlaken_v2_4_17 +axis_register_slice_v1_1_31=$RDI_DATADIR/xsim/ip/axis_register_slice_v1_1_31 +remote_port_sc_v4=$RDI_DATADIR/xsim/ip/remote_port_sc_v4 +hdcp22_cipher_v1_0_5=$RDI_DATADIR/xsim/ip/hdcp22_cipher_v1_0_5 +picxo_fracxo_v2_0_2=$RDI_DATADIR/xsim/ip/picxo_fracxo_v2_0_2 +xdma_v4_1_29=$RDI_DATADIR/xsim/ip/xdma_v4_1_29 +accelerator_monitor_v1_1_0=$RDI_DATADIR/xsim/ip/accelerator_monitor_v1_1_0 +noc_nps6_v1_0_0=$RDI_DATADIR/xsim/ip/noc_nps6_v1_0_0 +roe_framer_v3_0_8=$RDI_DATADIR/xsim/ip/roe_framer_v3_0_8 +g975_efec_i7_v2_0_23=$RDI_DATADIR/xsim/ip/g975_efec_i7_v2_0_23 +quadsgmii_v3_5_18=$RDI_DATADIR/xsim/ip/quadsgmii_v3_5_18 +axi_ethernet_buffer_v2_0_25=$RDI_DATADIR/xsim/ip/axi_ethernet_buffer_v2_0_25 +fit_timer_v2_0_12=$RDI_DATADIR/xsim/ip/fit_timer_v2_0_12 +bsip_v1_1_1=$RDI_DATADIR/xsim/ip/bsip_v1_1_1 +lmb_v10_v3_0=$RDI_DATADIR/xsim/ip/lmb_v10_v3_0 +mailbox_v2_1_17=$RDI_DATADIR/xsim/ip/mailbox_v2_1_17 +v_vscaler_v1_1_11=$RDI_DATADIR/xsim/ip/v_vscaler_v1_1_11 +fifo_generator_v13_0_7=$RDI_DATADIR/xsim/ip/fifo_generator_v13_0_7 +av_pat_gen_v1_0_2=$RDI_DATADIR/xsim/ip/av_pat_gen_v1_0_2 +v_frmbuf_rd_v2_5_2=$RDI_DATADIR/xsim/ip/v_frmbuf_rd_v2_5_2 +mipi_rx_phy_v1_0_0=$RDI_DATADIR/xsim/ip/mipi_rx_phy_v1_0_0 +gig_ethernet_pcs_pma_v16_2_18=$RDI_DATADIR/xsim/ip/gig_ethernet_pcs_pma_v16_2_18 +noc2_nmu_v1_0_1=$RDI_DATADIR/xsim/ip/noc2_nmu_v1_0_1 +ats_switch_v1_0_10=$RDI_DATADIR/xsim/ip/ats_switch_v1_0_10 +axi_ethernetlite_v3_0_30=$RDI_DATADIR/xsim/ip/axi_ethernetlite_v3_0_30 +axis_mu_v1_0_1=$RDI_DATADIR/xsim/ip/axis_mu_v1_0_1 +vby1hs_v1_0_5=$RDI_DATADIR/xsim/ip/vby1hs_v1_0_5 +noc_sc_v1_0_0=$RDI_DATADIR/xsim/ip/noc_sc_v1_0_0 +convolution_v9_0_20=$RDI_DATADIR/xsim/ip/convolution_v9_0_20 +axi4stream_vip_v1_1_17=$RDI_DATADIR/xsim/ip/axi4stream_vip_v1_1_17 +axis_subset_converter_v1_1_31=$RDI_DATADIR/xsim/ip/axis_subset_converter_v1_1_31 +srio_gen2_v4_1_19=$RDI_DATADIR/xsim/ip/srio_gen2_v4_1_19 +lib_bmg_v1_0_17=$RDI_DATADIR/xsim/ip/lib_bmg_v1_0_17 +system_cache_v5_0_11=$RDI_DATADIR/xsim/ip/system_cache_v5_0_11 +dp_videoaxi4s_bridge_v1_0_3=$RDI_DATADIR/xsim/ip/dp_videoaxi4s_bridge_v1_0_3 +sid_v8_0_21=$RDI_DATADIR/xsim/ip/sid_v8_0_21 +blk_mem_gen_v8_3_7=$RDI_DATADIR/xsim/ip/blk_mem_gen_v8_3_7 +noc2_sc_v1_0_0=$RDI_DATADIR/xsim/ip/noc2_sc_v1_0_0 diff --git a/proj/AudioProc.sim/sim_1/behav/xsim/xsim.ini.bak b/proj/AudioProc.sim/sim_1/behav/xsim/xsim.ini.bak new file mode 100644 index 0000000..65c1bae --- /dev/null +++ b/proj/AudioProc.sim/sim_1/behav/xsim/xsim.ini.bak @@ -0,0 +1,490 @@ +std=$RDI_DATADIR/xsim/vhdl/std +ieee=$RDI_DATADIR/xsim/vhdl/ieee +ieee_proposed=$RDI_DATADIR/xsim/vhdl/ieee_proposed +vl=$RDI_DATADIR/xsim/vhdl/vl +synopsys=$RDI_DATADIR/xsim/vhdl/synopsys +uvm=$RDI_DATADIR/xsim/system_verilog/uvm +secureip=$RDI_DATADIR/xsim/verilog/secureip +unisim=$RDI_DATADIR/xsim/vhdl/unisim +unimacro=$RDI_DATADIR/xsim/vhdl/unimacro +unifast=$RDI_DATADIR/xsim/vhdl/unifast +unisims_ver=$RDI_DATADIR/xsim/verilog/unisims_ver +unimacro_ver=$RDI_DATADIR/xsim/verilog/unimacro_ver +unifast_ver=$RDI_DATADIR/xsim/verilog/unifast_ver +simprims_ver=$RDI_DATADIR/xsim/verilog/simprims_ver +axi_epu_v1_0_4=$RDI_DATADIR/xsim/ip/axi_epu_v1_0_4 +xlconcat_v2_1_6=$RDI_DATADIR/xsim/ip/xlconcat_v2_1_6 +emb_fifo_gen_v1_0_5=$RDI_DATADIR/xsim/ip/emb_fifo_gen_v1_0_5 +mipi_csi2_tx_ctrl_v1_0_6=$RDI_DATADIR/xsim/ip/mipi_csi2_tx_ctrl_v1_0_6 +c_mux_bit_v12_0_9=$RDI_DATADIR/xsim/ip/c_mux_bit_v12_0_9 +smartconnect_v1_0=$RDI_DATADIR/xsim/ip/smartconnect_v1_0 +v_smpte_uhdsdi_tx_v1_0_4=$RDI_DATADIR/xsim/ip/v_smpte_uhdsdi_tx_v1_0_4 +cam_v3_0_0=$RDI_DATADIR/xsim/ip/cam_v3_0_0 +microblaze_v11_0_13=$RDI_DATADIR/xsim/ip/microblaze_v11_0_13 +axi_fifo_mm_s_v4_3_3=$RDI_DATADIR/xsim/ip/axi_fifo_mm_s_v4_3_3 +v_hdmi_rx1_v1_0_9=$RDI_DATADIR/xsim/ip/v_hdmi_rx1_v1_0_9 +video_frame_crc_v1_0_6=$RDI_DATADIR/xsim/ip/video_frame_crc_v1_0_6 +hdcp22_cipher_dp_v1_0_2=$RDI_DATADIR/xsim/ip/hdcp22_cipher_dp_v1_0_2 +generic_baseblocks_v2_1_2=$RDI_DATADIR/xsim/ip/generic_baseblocks_v2_1_2 +axis_clock_converter_v1_1_32=$RDI_DATADIR/xsim/ip/axis_clock_converter_v1_1_32 +psx_vip_v1_0_4=$RDI_DATADIR/xsim/ip/psx_vip_v1_0_4 +g975_efec_i4_v1_0_22=$RDI_DATADIR/xsim/ip/g975_efec_i4_v1_0_22 +axi_lite_ipif_v3_0_4=$RDI_DATADIR/xsim/ip/axi_lite_ipif_v3_0_4 +axis_dbg_stub_v1_0_1=$RDI_DATADIR/xsim/ip/axis_dbg_stub_v1_0_1 +ethernet_1_10_25g_v2_7_15=$RDI_DATADIR/xsim/ip/ethernet_1_10_25g_v2_7_15 +an_lt_v1_0_12=$RDI_DATADIR/xsim/ip/an_lt_v1_0_12 +hdmi_gt_controller_v1_0_13=$RDI_DATADIR/xsim/ip/hdmi_gt_controller_v1_0_13 +axi_cdma_v4_1_31=$RDI_DATADIR/xsim/ip/axi_cdma_v4_1_31 +xilinx_vip=$RDI_DATADIR/xsim/ip/xilinx_vip +videoaxi4s_bridge_v1_0_7=$RDI_DATADIR/xsim/ip/videoaxi4s_bridge_v1_0_7 +mdm_riscv_v1_0_2=$RDI_DATADIR/xsim/ip/mdm_riscv_v1_0_2 +axi_uartlite_v2_0_35=$RDI_DATADIR/xsim/ip/axi_uartlite_v2_0_35 +axi_perf_mon_v5_0_33=$RDI_DATADIR/xsim/ip/axi_perf_mon_v5_0_33 +axi_master_burst_v2_0_9=$RDI_DATADIR/xsim/ip/axi_master_burst_v2_0_9 +aie_ps_v1_0=$RDI_DATADIR/xsim/ip/aie_ps_v1_0 +ibert_lib_v1_0_11=$RDI_DATADIR/xsim/ip/ibert_lib_v1_0_11 +axi_datamover_v5_1_33=$RDI_DATADIR/xsim/ip/axi_datamover_v5_1_33 +noc_nps4_v1_0_0=$RDI_DATADIR/xsim/ip/noc_nps4_v1_0_0 +xbip_dsp48_addsub_v3_0_9=$RDI_DATADIR/xsim/ip/xbip_dsp48_addsub_v3_0_9 +v_axi4s_vid_out_v4_0_18=$RDI_DATADIR/xsim/ip/v_axi4s_vid_out_v4_0_18 +axi_chip2chip_v5_0_22=$RDI_DATADIR/xsim/ip/axi_chip2chip_v5_0_22 +gtwizard_ultrascale_v1_7_18=$RDI_DATADIR/xsim/ip/gtwizard_ultrascale_v1_7_18 +axi_infrastructure_v1_1_0=$RDI_DATADIR/xsim/ip/axi_infrastructure_v1_1_0 +switch_core_top_v1_0_16=$RDI_DATADIR/xsim/ip/switch_core_top_v1_0_16 +vitis_net_p4_v2_1_0=$RDI_DATADIR/xsim/ip/vitis_net_p4_v2_1_0 +axi_sideband_util_v1_0_15=$RDI_DATADIR/xsim/ip/axi_sideband_util_v1_0_15 +axis_infrastructure_v1_1_1=$RDI_DATADIR/xsim/ip/axis_infrastructure_v1_1_1 +dist_mem_gen_v8_0_15=$RDI_DATADIR/xsim/ip/dist_mem_gen_v8_0_15 +shell_utils_addr_remap_v1_0_10=$RDI_DATADIR/xsim/ip/shell_utils_addr_remap_v1_0_10 +xbip_addsub_v3_0_9=$RDI_DATADIR/xsim/ip/xbip_addsub_v3_0_9 +dds_compiler_v6_0_25=$RDI_DATADIR/xsim/ip/dds_compiler_v6_0_25 +bscan_axi_v1_0_2=$RDI_DATADIR/xsim/ip/bscan_axi_v1_0_2 +fifo_generator_v13_2_10=$RDI_DATADIR/xsim/ip/fifo_generator_v13_2_10 +dprx_fec_8b10b_v1_0_3=$RDI_DATADIR/xsim/ip/dprx_fec_8b10b_v1_0_3 +pcie_axi4lite_tap_v1_0_2=$RDI_DATADIR/xsim/ip/pcie_axi4lite_tap_v1_0_2 +av_pat_gen_v2_0_2=$RDI_DATADIR/xsim/ip/av_pat_gen_v2_0_2 +polar_v1_1_4=$RDI_DATADIR/xsim/ip/polar_v1_1_4 +v_tpg_v8_2_5=$RDI_DATADIR/xsim/ip/v_tpg_v8_2_5 +tcc_encoder_3gpplte_v4_0_19=$RDI_DATADIR/xsim/ip/tcc_encoder_3gpplte_v4_0_19 +axis_accelerator_adapter_v2_1_18=$RDI_DATADIR/xsim/ip/axis_accelerator_adapter_v2_1_18 +mem_pl_v1_0_2=$RDI_DATADIR/xsim/ip/mem_pl_v1_0_2 +perf_axi_tg_v1_0_13=$RDI_DATADIR/xsim/ip/perf_axi_tg_v1_0_13 +trace_hub_v1_1_0=$RDI_DATADIR/xsim/ip/trace_hub_v1_1_0 +axi_pcie_v2_9_11=$RDI_DATADIR/xsim/ip/axi_pcie_v2_9_11 +axi_emc_v3_0_31=$RDI_DATADIR/xsim/ip/axi_emc_v3_0_31 +tsn_endpoint_ethernet_mac_block_v1_0_16=$RDI_DATADIR/xsim/ip/tsn_endpoint_ethernet_mac_block_v1_0_16 +soft_ecc_proxy_v1_1_1=$RDI_DATADIR/xsim/ip/soft_ecc_proxy_v1_1_1 +axi_apb_bridge_v3_0_20=$RDI_DATADIR/xsim/ip/axi_apb_bridge_v3_0_20 +axis_broadcaster_v1_1_30=$RDI_DATADIR/xsim/ip/axis_broadcaster_v1_1_30 +axis_dwidth_converter_sc_v1_1=$RDI_DATADIR/xsim/ip/axis_dwidth_converter_sc_v1_1 +vid_edid_v1_0_2=$RDI_DATADIR/xsim/ip/vid_edid_v1_0_2 +noc_nidb_v1_0_0=$RDI_DATADIR/xsim/ip/noc_nidb_v1_0_0 +v_vid_in_axi4s_v5_0_4=$RDI_DATADIR/xsim/ip/v_vid_in_axi4s_v5_0_4 +v_dual_splitter_v1_0_11=$RDI_DATADIR/xsim/ip/v_dual_splitter_v1_0_11 +axis_ila_txns_cntr_v1_0_0=$RDI_DATADIR/xsim/ip/axis_ila_txns_cntr_v1_0_0 +pl_fileio_v1_0_0=$RDI_DATADIR/xsim/ip/pl_fileio_v1_0_0 +msm_cpp=$RDI_DATADIR/xsim/ip/msm_cpp +debug_tcp_server_v1=$RDI_DATADIR/xsim/ip/debug_tcp_server_v1 +v_frmbuf_wr_v2_5_2=$RDI_DATADIR/xsim/ip/v_frmbuf_wr_v2_5_2 +v_smpte_uhdsdi_rx_v1_0_3=$RDI_DATADIR/xsim/ip/v_smpte_uhdsdi_rx_v1_0_3 +mpegtsmux_v1_1_9=$RDI_DATADIR/xsim/ip/mpegtsmux_v1_1_9 +noc_nps_v1_0_1=$RDI_DATADIR/xsim/ip/noc_nps_v1_0_1 +v_multi_scaler_v1_2_6=$RDI_DATADIR/xsim/ip/v_multi_scaler_v1_2_6 +x5io_wizard_v1_0_4=$RDI_DATADIR/xsim/ip/x5io_wizard_v1_0_4 +axi_remapper_rx_v1_0_2=$RDI_DATADIR/xsim/ip/axi_remapper_rx_v1_0_2 +emu_perf_common_v1_0=$RDI_DATADIR/xsim/ip/emu_perf_common_v1_0 +sem_ultra_v3_1_26=$RDI_DATADIR/xsim/ip/sem_ultra_v3_1_26 +axi_utils_v2_0_9=$RDI_DATADIR/xsim/ip/axi_utils_v2_0_9 +v_tc_v6_2_8=$RDI_DATADIR/xsim/ip/v_tc_v6_2_8 +ieee802d3_clause74_fec_v1_0_18=$RDI_DATADIR/xsim/ip/ieee802d3_clause74_fec_v1_0_18 +jesd204c_v4_2_14=$RDI_DATADIR/xsim/ip/jesd204c_v4_2_14 +xtlm=$RDI_DATADIR/xsim/ip/xtlm +hdmi_acr_ctrl_v1_0_3=$RDI_DATADIR/xsim/ip/hdmi_acr_ctrl_v1_0_3 +icap_arb_v1_0_2=$RDI_DATADIR/xsim/ip/icap_arb_v1_0_2 +nvme_tc_v3_0_6=$RDI_DATADIR/xsim/ip/nvme_tc_v3_0_6 +axi4svideo_bridge_v1_0_18=$RDI_DATADIR/xsim/ip/axi4svideo_bridge_v1_0_18 +jtag_axi=$RDI_DATADIR/xsim/ip/jtag_axi +axi_intc_v4_1_19=$RDI_DATADIR/xsim/ip/axi_intc_v4_1_19 +v_demosaic_v1_1_11=$RDI_DATADIR/xsim/ip/v_demosaic_v1_1_11 +pcie_jtag_v1_0_1=$RDI_DATADIR/xsim/ip/pcie_jtag_v1_0_1 +xlslice_v1_0_4=$RDI_DATADIR/xsim/ip/xlslice_v1_0_4 +axi_vfifo_ctrl_v2_0_34=$RDI_DATADIR/xsim/ip/axi_vfifo_ctrl_v2_0_34 +gmii_to_rgmii_v4_1_14=$RDI_DATADIR/xsim/ip/gmii_to_rgmii_v4_1_14 +util_reduced_logic_v2_0_6=$RDI_DATADIR/xsim/ip/util_reduced_logic_v2_0_6 +nvmeha_v1_0_12=$RDI_DATADIR/xsim/ip/nvmeha_v1_0_12 +axi_c2c_v1_0_9=$RDI_DATADIR/xsim/ip/axi_c2c_v1_0_9 +ft_prach_v1_2_2=$RDI_DATADIR/xsim/ip/ft_prach_v1_2_2 +v_smpte_uhdsdi_v1_0_11=$RDI_DATADIR/xsim/ip/v_smpte_uhdsdi_v1_0_11 +axi_pmon_v1_0_1=$RDI_DATADIR/xsim/ip/axi_pmon_v1_0_1 +gtwizard_ultrascale_v1_6_16=$RDI_DATADIR/xsim/ip/gtwizard_ultrascale_v1_6_16 +gigantic_mux=$RDI_DATADIR/xsim/ip/gigantic_mux +displayport_v7_0_24=$RDI_DATADIR/xsim/ip/displayport_v7_0_24 +msm_adapters=$RDI_DATADIR/xsim/ip/msm_adapters +v_frmbuf_wr_v2_2_10=$RDI_DATADIR/xsim/ip/v_frmbuf_wr_v2_2_10 +fast_adapter_v1_0_8=$RDI_DATADIR/xsim/ip/fast_adapter_v1_0_8 +rst_vip_v1_0_6=$RDI_DATADIR/xsim/ip/rst_vip_v1_0_6 +v_hdmi_phy1_v1_0_12=$RDI_DATADIR/xsim/ip/v_hdmi_phy1_v1_0_12 +pcie_qdma_mailbox_v1_0_5=$RDI_DATADIR/xsim/ip/pcie_qdma_mailbox_v1_0_5 +pr_decoupler_v1_0_11=$RDI_DATADIR/xsim/ip/pr_decoupler_v1_0_11 +v_hdmi_tx1_v1_0_8=$RDI_DATADIR/xsim/ip/v_hdmi_tx1_v1_0_8 +processing_system7_v5_5_6=$RDI_DATADIR/xsim/ip/processing_system7_v5_5_6 +axis_cap_ctrl_v1_0_1=$RDI_DATADIR/xsim/ip/axis_cap_ctrl_v1_0_1 +common_rpc_v1=$RDI_DATADIR/xsim/ip/common_rpc_v1 +xtlm_ipc_v1_0=$RDI_DATADIR/xsim/ip/xtlm_ipc_v1_0 +v_tpg_v8_1_10=$RDI_DATADIR/xsim/ip/v_tpg_v8_1_10 +v_hcresampler_v1_1_11=$RDI_DATADIR/xsim/ip/v_hcresampler_v1_1_11 +axi_interface_monitor_v1_1_0=$RDI_DATADIR/xsim/ip/axi_interface_monitor_v1_1_0 +axi_intc_v4_1=$RDI_DATADIR/xsim/ip/axi_intc_v4_1 +mammoth_transcode_v1_0_2=$RDI_DATADIR/xsim/ip/mammoth_transcode_v1_0_2 +axi_timebase_wdt_v3_0_23=$RDI_DATADIR/xsim/ip/axi_timebase_wdt_v3_0_23 +floating_point_v7_0_23=$RDI_DATADIR/xsim/ip/floating_point_v7_0_23 +displayport_v9_0_9=$RDI_DATADIR/xsim/ip/displayport_v9_0_9 +noc_hbm_v1_0_0=$RDI_DATADIR/xsim/ip/noc_hbm_v1_0_0 +versal_cips_ps_vip_v1_0_9=$RDI_DATADIR/xsim/ip/versal_cips_ps_vip_v1_0_9 +amm_axi_bridge_v1_0_17=$RDI_DATADIR/xsim/ip/amm_axi_bridge_v1_0_17 +v_vid_gt_bridge_v2_0_5=$RDI_DATADIR/xsim/ip/v_vid_gt_bridge_v2_0_5 +v_gamma_lut_v1_1_11=$RDI_DATADIR/xsim/ip/v_gamma_lut_v1_1_11 +rld3_pl_v1_0_14=$RDI_DATADIR/xsim/ip/rld3_pl_v1_0_14 +l_ethernet_v3_3_10=$RDI_DATADIR/xsim/ip/l_ethernet_v3_3_10 +ernic_v4_0_3=$RDI_DATADIR/xsim/ip/ernic_v4_0_3 +fec_5g_common_v1_1_4=$RDI_DATADIR/xsim/ip/fec_5g_common_v1_1_4 +sim_qdma_sc_v1_0=$RDI_DATADIR/xsim/ip/sim_qdma_sc_v1_0 +dfx_bitstream_monitor_v1_0_5=$RDI_DATADIR/xsim/ip/dfx_bitstream_monitor_v1_0_5 +axi_mmu_v2_1_29=$RDI_DATADIR/xsim/ip/axi_mmu_v2_1_29 +v_sdi_rx_vid_bridge_v2_0_2=$RDI_DATADIR/xsim/ip/v_sdi_rx_vid_bridge_v2_0_2 +v_csc_v1_1_11=$RDI_DATADIR/xsim/ip/v_csc_v1_1_11 +usxgmii_v1_2_17=$RDI_DATADIR/xsim/ip/usxgmii_v1_2_17 +trace_s2mm_v2_0_1=$RDI_DATADIR/xsim/ip/trace_s2mm_v2_0_1 +ieee802d3_rs_fec_v2_0_22=$RDI_DATADIR/xsim/ip/ieee802d3_rs_fec_v2_0_22 +v_hdmi_tx_v3_0_4=$RDI_DATADIR/xsim/ip/v_hdmi_tx_v3_0_4 +ldpc_5gnr_v1_0_3=$RDI_DATADIR/xsim/ip/ldpc_5gnr_v1_0_3 +rama_v1_1_17_lib=$RDI_DATADIR/xsim/ip/rama_v1_1_17_lib +rs_decoder_v9_0_22=$RDI_DATADIR/xsim/ip/rs_decoder_v9_0_22 +ieee802d3_400g_rs_fec_v3_0_2=$RDI_DATADIR/xsim/ip/ieee802d3_400g_rs_fec_v3_0_2 +xscl=$RDI_DATADIR/xsim/ip/xscl +iomodule_v3_1_10=$RDI_DATADIR/xsim/ip/iomodule_v3_1_10 +axis_mem_v1_0_2=$RDI_DATADIR/xsim/ip/axis_mem_v1_0_2 +axi_tft_v2_0_28=$RDI_DATADIR/xsim/ip/axi_tft_v2_0_28 +fc32_rs_fec_v1_0_27=$RDI_DATADIR/xsim/ip/fc32_rs_fec_v1_0_27 +axi_remapper_tx_v1_0_2=$RDI_DATADIR/xsim/ip/axi_remapper_tx_v1_0_2 +dfx_axi_shutdown_manager_v1_0_3=$RDI_DATADIR/xsim/ip/dfx_axi_shutdown_manager_v1_0_3 +util_vector_logic_v2_0_4=$RDI_DATADIR/xsim/ip/util_vector_logic_v2_0_4 +axis_ila_intf_v1_0_2=$RDI_DATADIR/xsim/ip/axis_ila_intf_v1_0_2 +axi_amm_bridge_v1_0_21=$RDI_DATADIR/xsim/ip/axi_amm_bridge_v1_0_21 +xpm_cdc_gen_v1_0_4=$RDI_DATADIR/xsim/ip/xpm_cdc_gen_v1_0_4 +c_accum_v12_0_18=$RDI_DATADIR/xsim/ip/c_accum_v12_0_18 +cmac_v2_6_15=$RDI_DATADIR/xsim/ip/cmac_v2_6_15 +axi_firewall_v1_2_6=$RDI_DATADIR/xsim/ip/axi_firewall_v1_2_6 +dft_v4_2_8=$RDI_DATADIR/xsim/ip/dft_v4_2_8 +ernic_v3_1_5=$RDI_DATADIR/xsim/ip/ernic_v3_1_5 +xsdbs_v1_0_4=$RDI_DATADIR/xsim/ip/xsdbs_v1_0_4 +stm_v1_0=$RDI_DATADIR/xsim/ip/stm_v1_0 +axi_timer_v2_0_33=$RDI_DATADIR/xsim/ip/axi_timer_v2_0_33 +lmb_v10_v3_0_14=$RDI_DATADIR/xsim/ip/lmb_v10_v3_0_14 +v_deinterlacer_v5_1_4=$RDI_DATADIR/xsim/ip/v_deinterlacer_v5_1_4 +axis_data_fifo_v1_1_32=$RDI_DATADIR/xsim/ip/axis_data_fifo_v1_1_32 +hw_trace=$RDI_DATADIR/xsim/ip/hw_trace +sim_xdma_sc_v1=$RDI_DATADIR/xsim/ip/sim_xdma_sc_v1 +axi_vip_v1_1_17=$RDI_DATADIR/xsim/ip/axi_vip_v1_1_17 +mipi_dphy_v4_3_11=$RDI_DATADIR/xsim/ip/mipi_dphy_v4_3_11 +ieee802d3_50g_rs_fec_v2_0_17=$RDI_DATADIR/xsim/ip/ieee802d3_50g_rs_fec_v2_0_17 +xdfe_equalizer_v1_0_9=$RDI_DATADIR/xsim/ip/xdfe_equalizer_v1_0_9 +flexo_100g_rs_fec_v1_0_28=$RDI_DATADIR/xsim/ip/flexo_100g_rs_fec_v1_0_28 +v_uhdsdi_audio_v2_0_8=$RDI_DATADIR/xsim/ip/v_uhdsdi_audio_v2_0_8 +v_tc_v6_1_14=$RDI_DATADIR/xsim/ip/v_tc_v6_1_14 +ddr4_pl_phy_v1_0_2=$RDI_DATADIR/xsim/ip/ddr4_pl_phy_v1_0_2 +sem_v4_1_15=$RDI_DATADIR/xsim/ip/sem_v4_1_15 +c_shift_ram_v12_0_17=$RDI_DATADIR/xsim/ip/c_shift_ram_v12_0_17 +lib_pkg_v1_0_4=$RDI_DATADIR/xsim/ip/lib_pkg_v1_0_4 +bs_switch_v1_0_4=$RDI_DATADIR/xsim/ip/bs_switch_v1_0_4 +shell_utils_msp432_bsl_crc_gen_v1_0_2=$RDI_DATADIR/xsim/ip/shell_utils_msp432_bsl_crc_gen_v1_0_2 +axis_dbg_sync_v1_0_1=$RDI_DATADIR/xsim/ip/axis_dbg_sync_v1_0_1 +high_speed_selectio_wiz_v3_6_9=$RDI_DATADIR/xsim/ip/high_speed_selectio_wiz_v3_6_9 +emc_common_v3_0_7=$RDI_DATADIR/xsim/ip/emc_common_v3_0_7 +fir_compiler_v7_2_22=$RDI_DATADIR/xsim/ip/fir_compiler_v7_2_22 +microblaze_mcs_v2_3_7=$RDI_DATADIR/xsim/ip/microblaze_mcs_v2_3_7 +oran_radio_if_v3_2_0=$RDI_DATADIR/xsim/ip/oran_radio_if_v3_2_0 +i2s_transmitter_v1_0_8=$RDI_DATADIR/xsim/ip/i2s_transmitter_v1_0_8 +floating_point_v7_1_18=$RDI_DATADIR/xsim/ip/floating_point_v7_1_18 +sim_trig_v1_0_12=$RDI_DATADIR/xsim/ip/sim_trig_v1_0_12 +hbm2e_pl_v1_0_1=$RDI_DATADIR/xsim/ip/hbm2e_pl_v1_0_1 +axis_protocol_checker_v2_0_15=$RDI_DATADIR/xsim/ip/axis_protocol_checker_v2_0_15 +vitis_deadlock_detector_v1_0_2=$RDI_DATADIR/xsim/ip/vitis_deadlock_detector_v1_0_2 +axi_msg_v1_0_11=$RDI_DATADIR/xsim/ip/axi_msg_v1_0_11 +c_compare_v12_0_9=$RDI_DATADIR/xsim/ip/c_compare_v12_0_9 +c_mux_bus_v12_0_9=$RDI_DATADIR/xsim/ip/c_mux_bus_v12_0_9 +xsdbm_v3_0_2=$RDI_DATADIR/xsim/ip/xsdbm_v3_0_2 +rld3_pl_phy_v1_0_2=$RDI_DATADIR/xsim/ip/rld3_pl_phy_v1_0_2 +mpram_v1_0_4=$RDI_DATADIR/xsim/ip/mpram_v1_0_4 +oddr_v1_0_4=$RDI_DATADIR/xsim/ip/oddr_v1_0_4 +bs_mux_v1_0_1=$RDI_DATADIR/xsim/ip/bs_mux_v1_0_1 +ptp_1588_timer_syncer_v2_0_6=$RDI_DATADIR/xsim/ip/ptp_1588_timer_syncer_v2_0_6 +dfx_controller_v1_0_7=$RDI_DATADIR/xsim/ip/dfx_controller_v1_0_7 +noc_ncrb_v1_0_0=$RDI_DATADIR/xsim/ip/noc_ncrb_v1_0_0 +rs_toolbox_v9_0_13=$RDI_DATADIR/xsim/ip/rs_toolbox_v9_0_13 +pc_cfr_v8_0_2=$RDI_DATADIR/xsim/ip/pc_cfr_v8_0_2 +multi_channel_25g_rs_fec_v1_0_26=$RDI_DATADIR/xsim/ip/multi_channel_25g_rs_fec_v1_0_26 +lmb_bram_if_cntlr_v4_0_24=$RDI_DATADIR/xsim/ip/lmb_bram_if_cntlr_v4_0_24 +hdcp_keymngmt_blk_v1_0_2=$RDI_DATADIR/xsim/ip/hdcp_keymngmt_blk_v1_0_2 +axi_lite_ipif_v3_0=$RDI_DATADIR/xsim/ip/axi_lite_ipif_v3_0 +compact_gt_v1_0_17=$RDI_DATADIR/xsim/ip/compact_gt_v1_0_17 +v_vcresampler_v1_1_11=$RDI_DATADIR/xsim/ip/v_vcresampler_v1_1_11 +mipi_dsi2_rx_ctrl_v1_0_0=$RDI_DATADIR/xsim/ip/mipi_dsi2_rx_ctrl_v1_0_0 +axi_quad_spi_v3_2_30=$RDI_DATADIR/xsim/ip/axi_quad_spi_v3_2_30 +div_gen_v5_1_22=$RDI_DATADIR/xsim/ip/div_gen_v5_1_22 +v_frmbuf_rd_v2_2_10=$RDI_DATADIR/xsim/ip/v_frmbuf_rd_v2_2_10 +can_v5_1_3=$RDI_DATADIR/xsim/ip/can_v5_1_3 +axi_pcie3_v3_0_30=$RDI_DATADIR/xsim/ip/axi_pcie3_v3_0_30 +emb_mem_gen_v1_0_9=$RDI_DATADIR/xsim/ip/emb_mem_gen_v1_0_9 +noc2_xbr2x4_v1_0_0=$RDI_DATADIR/xsim/ip/noc2_xbr2x4_v1_0_0 +xbip_counter_v3_0_9=$RDI_DATADIR/xsim/ip/xbip_counter_v3_0_9 +axi_jtag_v1_0_2=$RDI_DATADIR/xsim/ip/axi_jtag_v1_0_2 +tmr_manager_v1_0_12=$RDI_DATADIR/xsim/ip/tmr_manager_v1_0_12 +noc_nmu_sim_v1_0_0=$RDI_DATADIR/xsim/ip/noc_nmu_sim_v1_0_0 +mipi_csi2_rx_ctrl_v1_0_10=$RDI_DATADIR/xsim/ip/mipi_csi2_rx_ctrl_v1_0_10 +axi_bram_ctrl_v4_0_15=$RDI_DATADIR/xsim/ip/axi_bram_ctrl_v4_0_15 +axi_gpio_v2_0_33=$RDI_DATADIR/xsim/ip/axi_gpio_v2_0_33 +rs_encoder_v9_0_21=$RDI_DATADIR/xsim/ip/rs_encoder_v9_0_21 +rwd_tlmmodel_v1=$RDI_DATADIR/xsim/ip/rwd_tlmmodel_v1 +axi_bram_ctrl_v4_1_10=$RDI_DATADIR/xsim/ip/axi_bram_ctrl_v4_1_10 +uram_rd_back_v1_0_4=$RDI_DATADIR/xsim/ip/uram_rd_back_v1_0_4 +lib_fifo_v1_0_19=$RDI_DATADIR/xsim/ip/lib_fifo_v1_0_19 +canfd_v3_0_10=$RDI_DATADIR/xsim/ip/canfd_v3_0_10 +hdcp22_rng_v1_0_3=$RDI_DATADIR/xsim/ip/hdcp22_rng_v1_0_3 +xfft_v9_1_12=$RDI_DATADIR/xsim/ip/xfft_v9_1_12 +axi_memory_init_v1_0_12=$RDI_DATADIR/xsim/ip/axi_memory_init_v1_0_12 +common_cpp_v1_0=$RDI_DATADIR/xsim/ip/common_cpp_v1_0 +ai_pl_trig=$RDI_DATADIR/xsim/ip/ai_pl_trig +c_reg_fd_v12_0_9=$RDI_DATADIR/xsim/ip/c_reg_fd_v12_0_9 +axi_mm2s_mapper_v1_1_30=$RDI_DATADIR/xsim/ip/axi_mm2s_mapper_v1_1_30 +ldpc_v2_0_15=$RDI_DATADIR/xsim/ip/ldpc_v2_0_15 +sim_cpu_v1_0=$RDI_DATADIR/xsim/ip/sim_cpu_v1_0 +axi_data_fifo_v2_1_30=$RDI_DATADIR/xsim/ip/axi_data_fifo_v2_1_30 +g709_fec_v2_4_10=$RDI_DATADIR/xsim/ip/g709_fec_v2_4_10 +axi_mcdma_v1_1_12=$RDI_DATADIR/xsim/ip/axi_mcdma_v1_1_12 +axi_lmb_bridge_v1_0_3=$RDI_DATADIR/xsim/ip/axi_lmb_bridge_v1_0_3 +lte_fft_v2_1_10=$RDI_DATADIR/xsim/ip/lte_fft_v2_1_10 +axi_interconnect_v1_7_23=$RDI_DATADIR/xsim/ip/axi_interconnect_v1_7_23 +axi_dwidth_converter_v2_1_31=$RDI_DATADIR/xsim/ip/axi_dwidth_converter_v2_1_31 +axi_usb2_device_v5_0_32=$RDI_DATADIR/xsim/ip/axi_usb2_device_v5_0_32 +axi_hwicap_v3_0_35=$RDI_DATADIR/xsim/ip/axi_hwicap_v3_0_35 +ldpc_5gnr_lite_v1_0_2=$RDI_DATADIR/xsim/ip/ldpc_5gnr_lite_v1_0_2 +fifo_generator_v13_1_5=$RDI_DATADIR/xsim/ip/fifo_generator_v13_1_5 +axi_protocol_checker_v2_0_17=$RDI_DATADIR/xsim/ip/axi_protocol_checker_v2_0_17 +c_counter_binary_v12_0_19=$RDI_DATADIR/xsim/ip/c_counter_binary_v12_0_19 +axis_ila_pp_v1_0_2=$RDI_DATADIR/xsim/ip/axis_ila_pp_v1_0_2 +mem_tg_v1_0_13=$RDI_DATADIR/xsim/ip/mem_tg_v1_0_13 +xbip_utils_v3_0_13=$RDI_DATADIR/xsim/ip/xbip_utils_v3_0_13 +aie_xtlm_v1_0_0=$RDI_DATADIR/xsim/ip/aie_xtlm_v1_0_0 +xtlm_ap_ctrl_v1_0=$RDI_DATADIR/xsim/ip/xtlm_ap_ctrl_v1_0 +v_vid_in_axi4s_v4_0_11=$RDI_DATADIR/xsim/ip/v_vid_in_axi4s_v4_0_11 +cmac_usplus_v3_1_17=$RDI_DATADIR/xsim/ip/cmac_usplus_v3_1_17 +xdfe_common_v1_0_3=$RDI_DATADIR/xsim/ip/xdfe_common_v1_0_3 +viterbi_v9_1_17=$RDI_DATADIR/xsim/ip/viterbi_v9_1_17 +xdfe_nr_prach_v2_0_3=$RDI_DATADIR/xsim/ip/xdfe_nr_prach_v2_0_3 +v_smpte_sdi_v3_0_11=$RDI_DATADIR/xsim/ip/v_smpte_sdi_v3_0_11 +mdm_v3_2=$RDI_DATADIR/xsim/ip/mdm_v3_2 +clk_vip_v1_0_4=$RDI_DATADIR/xsim/ip/clk_vip_v1_0_4 +mdm_v3_2_26=$RDI_DATADIR/xsim/ip/mdm_v3_2_26 +xtlm_trace_model_v1_0=$RDI_DATADIR/xsim/ip/xtlm_trace_model_v1_0 +xbip_dsp48_multadd_v3_0_9=$RDI_DATADIR/xsim/ip/xbip_dsp48_multadd_v3_0_9 +noc2_nsu_v1_0_1=$RDI_DATADIR/xsim/ip/noc2_nsu_v1_0_1 +timer_sync_1588_v1_2_5=$RDI_DATADIR/xsim/ip/timer_sync_1588_v1_2_5 +axis_ila_ct_v1_0_1=$RDI_DATADIR/xsim/ip/axis_ila_ct_v1_0_1 +dcmac_v2_4_0=$RDI_DATADIR/xsim/ip/dcmac_v2_4_0 +v_dp_axi4s_vid_out_v1_0_8=$RDI_DATADIR/xsim/ip/v_dp_axi4s_vid_out_v1_0_8 +xbip_dsp48_acc_v3_0_9=$RDI_DATADIR/xsim/ip/xbip_dsp48_acc_v3_0_9 +noc2_xbr4x2_v1_0_0=$RDI_DATADIR/xsim/ip/noc2_xbr4x2_v1_0_0 +sd_fec_v1_1_14=$RDI_DATADIR/xsim/ip/sd_fec_v1_1_14 +xbip_accum_v3_0_9=$RDI_DATADIR/xsim/ip/xbip_accum_v3_0_9 +displayport_v8_1_9=$RDI_DATADIR/xsim/ip/displayport_v8_1_9 +ilknf_v1_3_4=$RDI_DATADIR/xsim/ip/ilknf_v1_3_4 +v_letterbox_v1_1_11=$RDI_DATADIR/xsim/ip/v_letterbox_v1_1_11 +iomodule_v3_0=$RDI_DATADIR/xsim/ip/iomodule_v3_0 +dbg_intf=$RDI_DATADIR/xsim/ip/dbg_intf +cpm5_v1_0_16=$RDI_DATADIR/xsim/ip/cpm5_v1_0_16 +ieee802d3_25g_rs_fec_v1_0_30=$RDI_DATADIR/xsim/ip/ieee802d3_25g_rs_fec_v1_0_30 +jesd204_v7_2_20=$RDI_DATADIR/xsim/ip/jesd204_v7_2_20 +clk_gen_sim_v1_0_4=$RDI_DATADIR/xsim/ip/clk_gen_sim_v1_0_4 +g709_rs_decoder_v2_2_14=$RDI_DATADIR/xsim/ip/g709_rs_decoder_v2_2_14 +cpri_v8_11_20=$RDI_DATADIR/xsim/ip/cpri_v8_11_20 +ieee802d3_200g_rs_fec_v2_0_11=$RDI_DATADIR/xsim/ip/ieee802d3_200g_rs_fec_v2_0_11 +v_warp_init_v1_1_4=$RDI_DATADIR/xsim/ip/v_warp_init_v1_1_4 +v_hscaler_v1_1_11=$RDI_DATADIR/xsim/ip/v_hscaler_v1_1_11 +spdif_v2_0_29=$RDI_DATADIR/xsim/ip/spdif_v2_0_29 +func_emu_util_v1_0=$RDI_DATADIR/xsim/ip/func_emu_util_v1_0 +axi_uart16550_v2_0_33=$RDI_DATADIR/xsim/ip/axi_uart16550_v2_0_33 +axi_clock_converter_v2_1_30=$RDI_DATADIR/xsim/ip/axi_clock_converter_v2_1_30 +dprx_v1_0_4=$RDI_DATADIR/xsim/ip/dprx_v1_0_4 +mrmac_v2_3_0=$RDI_DATADIR/xsim/ip/mrmac_v2_3_0 +cic_compiler_v4_0_19=$RDI_DATADIR/xsim/ip/cic_compiler_v4_0_19 +c_gate_bit_v12_0_9=$RDI_DATADIR/xsim/ip/c_gate_bit_v12_0_9 +noc_sc_v1_0_0_legacy=$RDI_DATADIR/xsim/ip/noc_sc_v1_0_0_legacy +ten_gig_eth_pcs_pma_v6_0_27=$RDI_DATADIR/xsim/ip/ten_gig_eth_pcs_pma_v6_0_27 +xdfe_cc_filter_v1_1_4=$RDI_DATADIR/xsim/ip/xdfe_cc_filter_v1_1_4 +axi_crossbar_v2_1_32=$RDI_DATADIR/xsim/ip/axi_crossbar_v2_1_32 +axis_itct_v1_0_1=$RDI_DATADIR/xsim/ip/axis_itct_v1_0_1 +xbip_pipe_v3_0_9=$RDI_DATADIR/xsim/ip/xbip_pipe_v3_0_9 +tsn_temac_v1_0_11=$RDI_DATADIR/xsim/ip/tsn_temac_v1_0_11 +lib_srl_fifo_v1_0_4=$RDI_DATADIR/xsim/ip/lib_srl_fifo_v1_0_4 +ecc_v2_0_16=$RDI_DATADIR/xsim/ip/ecc_v2_0_16 +mutex_v2_1_13=$RDI_DATADIR/xsim/ip/mutex_v2_1_13 +lmb_bram_if_cntlr_v4_0=$RDI_DATADIR/xsim/ip/lmb_bram_if_cntlr_v4_0 +ahblite_axi_bridge_v3_0_26=$RDI_DATADIR/xsim/ip/ahblite_axi_bridge_v3_0_26 +tmr_inject_v1_0_6=$RDI_DATADIR/xsim/ip/tmr_inject_v1_0_6 +qdriv_pl_phy_v1_0_2=$RDI_DATADIR/xsim/ip/qdriv_pl_phy_v1_0_2 +tcc_decoder_3gppmm_v2_0_27=$RDI_DATADIR/xsim/ip/tcc_decoder_3gppmm_v2_0_27 +ai_noc=$RDI_DATADIR/xsim/ip/ai_noc +util_idelay_ctrl_v1_0_4=$RDI_DATADIR/xsim/ip/util_idelay_ctrl_v1_0_4 +noc2_nps_v1_0_0=$RDI_DATADIR/xsim/ip/noc2_nps_v1_0_0 +etrnic_v1_1_8=$RDI_DATADIR/xsim/ip/etrnic_v1_1_8 +axi_ahblite_bridge_v3_0_28=$RDI_DATADIR/xsim/ip/axi_ahblite_bridge_v3_0_28 +ieee802d3_50g_rs_fec_v1_0_24=$RDI_DATADIR/xsim/ip/ieee802d3_50g_rs_fec_v1_0_24 +noc_hbm_nmu_sim_v1_0_0=$RDI_DATADIR/xsim/ip/noc_hbm_nmu_sim_v1_0_0 +noc_npp_rptr_v1_0_0=$RDI_DATADIR/xsim/ip/noc_npp_rptr_v1_0_0 +dfx_decoupler_v1_0_9=$RDI_DATADIR/xsim/ip/dfx_decoupler_v1_0_9 +dsp_macro_v1_0_6=$RDI_DATADIR/xsim/ip/dsp_macro_v1_0_6 +cpm5n_v1_0_8=$RDI_DATADIR/xsim/ip/cpm5n_v1_0_8 +axi_dma_v7_1_32=$RDI_DATADIR/xsim/ip/axi_dma_v7_1_32 +sim_ipc_multi_intf_v1_0=$RDI_DATADIR/xsim/ip/sim_ipc_multi_intf_v1_0 +hdcp_v1_0_5=$RDI_DATADIR/xsim/ip/hdcp_v1_0_5 +axi_epc_v2_0_34=$RDI_DATADIR/xsim/ip/axi_epc_v2_0_34 +tmr_comparator_v1_0_7=$RDI_DATADIR/xsim/ip/tmr_comparator_v1_0_7 +v_warp_filter_v1_1_4=$RDI_DATADIR/xsim/ip/v_warp_filter_v1_1_4 +ai_pl=$RDI_DATADIR/xsim/ip/ai_pl +xdfe_nlf_v1_1_1=$RDI_DATADIR/xsim/ip/xdfe_nlf_v1_1_1 +v_scenechange_v1_1_6=$RDI_DATADIR/xsim/ip/v_scenechange_v1_1_6 +vfb_v1_0_25=$RDI_DATADIR/xsim/ip/vfb_v1_0_25 +axis_interconnect_v1_1_23=$RDI_DATADIR/xsim/ip/axis_interconnect_v1_1_23 +xlconstant_v1_1_9=$RDI_DATADIR/xsim/ip/xlconstant_v1_1_9 +adc_dac_if_phy_v1_0_0=$RDI_DATADIR/xsim/ip/adc_dac_if_phy_v1_0_0 +mult_gen_v12_0_21=$RDI_DATADIR/xsim/ip/mult_gen_v12_0_21 +i2s_receiver_v1_0_8=$RDI_DATADIR/xsim/ip/i2s_receiver_v1_0_8 +qdriv_pl_v1_0_13=$RDI_DATADIR/xsim/ip/qdriv_pl_v1_0_13 +xbip_dsp48_wrapper_v3_0_6=$RDI_DATADIR/xsim/ip/xbip_dsp48_wrapper_v3_0_6 +lut_buffer_v2_0_1=$RDI_DATADIR/xsim/ip/lut_buffer_v2_0_1 +vid_phy_controller_v2_2_18=$RDI_DATADIR/xsim/ip/vid_phy_controller_v2_2_18 +advanced_io_wizard_phy_v1_0_3=$RDI_DATADIR/xsim/ip/advanced_io_wizard_phy_v1_0_3 +uhdsdi_gt_v2_1_4=$RDI_DATADIR/xsim/ip/uhdsdi_gt_v2_1_4 +axi_dbg_hub=$RDI_DATADIR/xsim/ip/axi_dbg_hub +anlt_subcore_ip_v1_0_2=$RDI_DATADIR/xsim/ip/anlt_subcore_ip_v1_0_2 +xxv_ethernet_v4_1_10=$RDI_DATADIR/xsim/ip/xxv_ethernet_v4_1_10 +cdcam_v1_1_0=$RDI_DATADIR/xsim/ip/cdcam_v1_1_0 +pci32_v5_0_13=$RDI_DATADIR/xsim/ip/pci32_v5_0_13 +v_mix_v5_2_9=$RDI_DATADIR/xsim/ip/v_mix_v5_2_9 +pci64_v5_0_12=$RDI_DATADIR/xsim/ip/pci64_v5_0_12 +in_system_ibert_v1_0_22=$RDI_DATADIR/xsim/ip/in_system_ibert_v1_0_22 +proc_sys_reset_v5_0_15=$RDI_DATADIR/xsim/ip/proc_sys_reset_v5_0_15 +axis_dwidth_converter_v1_1_30=$RDI_DATADIR/xsim/ip/axis_dwidth_converter_v1_1_30 +sim_ddr_v1_0=$RDI_DATADIR/xsim/ip/sim_ddr_v1_0 +sim_qdma_cpp_v1_0=$RDI_DATADIR/xsim/ip/sim_qdma_cpp_v1_0 +axi_traffic_gen_v3_0_17=$RDI_DATADIR/xsim/ip/axi_traffic_gen_v3_0_17 +v_hdmi_rx_v3_0_4=$RDI_DATADIR/xsim/ip/v_hdmi_rx_v3_0_4 +xdfe_resampler_v1_0_9=$RDI_DATADIR/xsim/ip/xdfe_resampler_v1_0_9 +zynq_ultra_ps_e_v3_3_12=$RDI_DATADIR/xsim/ip/zynq_ultra_ps_e_v3_3_12 +axi_i3c_v1_0_0=$RDI_DATADIR/xsim/ip/axi_i3c_v1_0_0 +g709_rs_encoder_v2_2_12=$RDI_DATADIR/xsim/ip/g709_rs_encoder_v2_2_12 +xpm=$RDI_DATADIR/xsim/ip/xpm +dptx_v1_0_4=$RDI_DATADIR/xsim/ip/dptx_v1_0_4 +v_axi4s_remap_v1_1_10=$RDI_DATADIR/xsim/ip/v_axi4s_remap_v1_1_10 +tri_mode_ethernet_mac_v9_0_32=$RDI_DATADIR/xsim/ip/tri_mode_ethernet_mac_v9_0_32 +xbip_bram18k_v3_0_9=$RDI_DATADIR/xsim/ip/xbip_bram18k_v3_0_9 +shell_utils_build_info_v2_0_0=$RDI_DATADIR/xsim/ip/shell_utils_build_info_v2_0_0 +cordic_v6_0_22=$RDI_DATADIR/xsim/ip/cordic_v6_0_22 +sim_xdma_cpp_v1=$RDI_DATADIR/xsim/ip/sim_xdma_cpp_v1 +axi_hbicap_v1_0_7=$RDI_DATADIR/xsim/ip/axi_hbicap_v1_0_7 +zynq_ultra_ps_e_vip_v1_0_17=$RDI_DATADIR/xsim/ip/zynq_ultra_ps_e_vip_v1_0_17 +gtwizard_ultrascale_v1_5_4=$RDI_DATADIR/xsim/ip/gtwizard_ultrascale_v1_5_4 +remote_port_c_v4=$RDI_DATADIR/xsim/ip/remote_port_c_v4 +axi_vdma_v6_3_19=$RDI_DATADIR/xsim/ip/axi_vdma_v6_3_19 +x5io_wizard_phy_v1_0_1=$RDI_DATADIR/xsim/ip/x5io_wizard_phy_v1_0_1 +tcc_encoder_3gpp_v5_0_22=$RDI_DATADIR/xsim/ip/tcc_encoder_3gpp_v5_0_22 +axis_combiner_v1_1_29=$RDI_DATADIR/xsim/ip/axis_combiner_v1_1_29 +microblaze_v9_5_5=$RDI_DATADIR/xsim/ip/microblaze_v9_5_5 +advanced_io_wizard_v1_0_13=$RDI_DATADIR/xsim/ip/advanced_io_wizard_v1_0_13 +lib_cdc_v1_0_3=$RDI_DATADIR/xsim/ip/lib_cdc_v1_0_3 +axis_ila_adv_trig_v1_0_1=$RDI_DATADIR/xsim/ip/axis_ila_adv_trig_v1_0_1 +qdma_v5_0_9=$RDI_DATADIR/xsim/ip/qdma_v5_0_9 +ddr4_pl_v1_0_14=$RDI_DATADIR/xsim/ip/ddr4_pl_v1_0_14 +noc_mc_ddr5_phy_v1_0_1=$RDI_DATADIR/xsim/ip/noc_mc_ddr5_phy_v1_0_1 +xtlm_simple_interconnect_v1_0=$RDI_DATADIR/xsim/ip/xtlm_simple_interconnect_v1_0 +axi_sg_v4_1_18=$RDI_DATADIR/xsim/ip/axi_sg_v4_1_18 +xdfe_cc_mixer_v2_0_4=$RDI_DATADIR/xsim/ip/xdfe_cc_mixer_v2_0_4 +processing_system7_vip_v1_0_19=$RDI_DATADIR/xsim/ip/processing_system7_vip_v1_0_19 +mipi_dsi_tx_ctrl_v1_0_9=$RDI_DATADIR/xsim/ip/mipi_dsi_tx_ctrl_v1_0_9 +microblaze_riscv_v1_0_2=$RDI_DATADIR/xsim/ip/microblaze_riscv_v1_0_2 +cpm4_v1_0_16=$RDI_DATADIR/xsim/ip/cpm4_v1_0_16 +xbip_multadd_v3_0_20=$RDI_DATADIR/xsim/ip/xbip_multadd_v3_0_20 +axis_data_fifo_v2_0_13=$RDI_DATADIR/xsim/ip/axis_data_fifo_v2_0_13 +ltlib_v1_0_2=$RDI_DATADIR/xsim/ip/ltlib_v1_0_2 +axis_switch_sc_v1_1=$RDI_DATADIR/xsim/ip/axis_switch_sc_v1_1 +sim_clk_gen_v1_0_4=$RDI_DATADIR/xsim/ip/sim_clk_gen_v1_0_4 +xdfe_fft_v1_0_7=$RDI_DATADIR/xsim/ip/xdfe_fft_v1_0_7 +hsdp_trace_v2_0_2=$RDI_DATADIR/xsim/ip/hsdp_trace_v2_0_2 +blk_mem_gen_v8_4_8=$RDI_DATADIR/xsim/ip/blk_mem_gen_v8_4_8 +cam_blk_lib_v1_1_0=$RDI_DATADIR/xsim/ip/cam_blk_lib_v1_1_0 +tmr_voter_v1_0_6=$RDI_DATADIR/xsim/ip/tmr_voter_v1_0_6 +util_ff_v1_0_3=$RDI_DATADIR/xsim/ip/util_ff_v1_0_3 +interrupt_control_v3_1_5=$RDI_DATADIR/xsim/ip/interrupt_control_v3_1_5 +xdfe_ofdm_v2_1_0=$RDI_DATADIR/xsim/ip/xdfe_ofdm_v2_1_0 +audio_clock_recovery_unit_v1_0_4=$RDI_DATADIR/xsim/ip/audio_clock_recovery_unit_v1_0_4 +ten_gig_eth_mac_v15_1_12=$RDI_DATADIR/xsim/ip/ten_gig_eth_mac_v15_1_12 +axi_protocol_converter_v2_1_31=$RDI_DATADIR/xsim/ip/axi_protocol_converter_v2_1_31 +xbip_dsp48_mult_v3_0_9=$RDI_DATADIR/xsim/ip/xbip_dsp48_mult_v3_0_9 +tmr_sem_v1_0_26=$RDI_DATADIR/xsim/ip/tmr_sem_v1_0_26 +v_frmbuf_rd_v2_4_3=$RDI_DATADIR/xsim/ip/v_frmbuf_rd_v2_4_3 +cmpy_v6_0_24=$RDI_DATADIR/xsim/ip/cmpy_v6_0_24 +ta_dma_v1_0_15=$RDI_DATADIR/xsim/ip/ta_dma_v1_0_15 +v_tpg_v8_0_14=$RDI_DATADIR/xsim/ip/v_tpg_v8_0_14 +axi_tlm_ext_v1_0=$RDI_DATADIR/xsim/ip/axi_tlm_ext_v1_0 +axi_iic_v2_1_7=$RDI_DATADIR/xsim/ip/axi_iic_v2_1_7 +c_addsub_v12_0_18=$RDI_DATADIR/xsim/ip/c_addsub_v12_0_18 +audio_tpg_v1_0_2=$RDI_DATADIR/xsim/ip/audio_tpg_v1_0_2 +axi_tg_sc_v1_0=$RDI_DATADIR/xsim/ip/axi_tg_sc_v1_0 +v_vid_sdi_tx_bridge_v2_0_2=$RDI_DATADIR/xsim/ip/v_vid_sdi_tx_bridge_v2_0_2 +noc_nsu_sim_v1_0_0=$RDI_DATADIR/xsim/ip/noc_nsu_sim_v1_0_0 +axi_register_slice_v2_1_31=$RDI_DATADIR/xsim/ip/axi_register_slice_v2_1_31 +axis_switch_v1_1_31=$RDI_DATADIR/xsim/ip/axis_switch_v1_1_31 +axi_stream_monitor_v1_1_1=$RDI_DATADIR/xsim/ip/axi_stream_monitor_v1_1_1 +v_uhdsdi_vidgen_v1_0_3=$RDI_DATADIR/xsim/ip/v_uhdsdi_vidgen_v1_0_3 +bscan_jtag=$RDI_DATADIR/xsim/ip/bscan_jtag +audio_formatter_v1_0_13=$RDI_DATADIR/xsim/ip/audio_formatter_v1_0_13 +axis_vio_v1_0_11=$RDI_DATADIR/xsim/ip/axis_vio_v1_0_11 +interlaken_v2_4_17=$RDI_DATADIR/xsim/ip/interlaken_v2_4_17 +axis_register_slice_v1_1_31=$RDI_DATADIR/xsim/ip/axis_register_slice_v1_1_31 +remote_port_sc_v4=$RDI_DATADIR/xsim/ip/remote_port_sc_v4 +hdcp22_cipher_v1_0_5=$RDI_DATADIR/xsim/ip/hdcp22_cipher_v1_0_5 +picxo_fracxo_v2_0_2=$RDI_DATADIR/xsim/ip/picxo_fracxo_v2_0_2 +xdma_v4_1_29=$RDI_DATADIR/xsim/ip/xdma_v4_1_29 +accelerator_monitor_v1_1_0=$RDI_DATADIR/xsim/ip/accelerator_monitor_v1_1_0 +noc_nps6_v1_0_0=$RDI_DATADIR/xsim/ip/noc_nps6_v1_0_0 +roe_framer_v3_0_8=$RDI_DATADIR/xsim/ip/roe_framer_v3_0_8 +g975_efec_i7_v2_0_23=$RDI_DATADIR/xsim/ip/g975_efec_i7_v2_0_23 +quadsgmii_v3_5_18=$RDI_DATADIR/xsim/ip/quadsgmii_v3_5_18 +axi_ethernet_buffer_v2_0_25=$RDI_DATADIR/xsim/ip/axi_ethernet_buffer_v2_0_25 +fit_timer_v2_0_12=$RDI_DATADIR/xsim/ip/fit_timer_v2_0_12 +bsip_v1_1_1=$RDI_DATADIR/xsim/ip/bsip_v1_1_1 +lmb_v10_v3_0=$RDI_DATADIR/xsim/ip/lmb_v10_v3_0 +mailbox_v2_1_17=$RDI_DATADIR/xsim/ip/mailbox_v2_1_17 +v_vscaler_v1_1_11=$RDI_DATADIR/xsim/ip/v_vscaler_v1_1_11 +fifo_generator_v13_0_7=$RDI_DATADIR/xsim/ip/fifo_generator_v13_0_7 +av_pat_gen_v1_0_2=$RDI_DATADIR/xsim/ip/av_pat_gen_v1_0_2 +v_frmbuf_rd_v2_5_2=$RDI_DATADIR/xsim/ip/v_frmbuf_rd_v2_5_2 +mipi_rx_phy_v1_0_0=$RDI_DATADIR/xsim/ip/mipi_rx_phy_v1_0_0 +gig_ethernet_pcs_pma_v16_2_18=$RDI_DATADIR/xsim/ip/gig_ethernet_pcs_pma_v16_2_18 +noc2_nmu_v1_0_1=$RDI_DATADIR/xsim/ip/noc2_nmu_v1_0_1 +ats_switch_v1_0_10=$RDI_DATADIR/xsim/ip/ats_switch_v1_0_10 +axi_ethernetlite_v3_0_30=$RDI_DATADIR/xsim/ip/axi_ethernetlite_v3_0_30 +axis_mu_v1_0_1=$RDI_DATADIR/xsim/ip/axis_mu_v1_0_1 +vby1hs_v1_0_5=$RDI_DATADIR/xsim/ip/vby1hs_v1_0_5 +noc_sc_v1_0_0=$RDI_DATADIR/xsim/ip/noc_sc_v1_0_0 +convolution_v9_0_20=$RDI_DATADIR/xsim/ip/convolution_v9_0_20 +axi4stream_vip_v1_1_17=$RDI_DATADIR/xsim/ip/axi4stream_vip_v1_1_17 +axis_subset_converter_v1_1_31=$RDI_DATADIR/xsim/ip/axis_subset_converter_v1_1_31 +srio_gen2_v4_1_19=$RDI_DATADIR/xsim/ip/srio_gen2_v4_1_19 +lib_bmg_v1_0_17=$RDI_DATADIR/xsim/ip/lib_bmg_v1_0_17 +system_cache_v5_0_11=$RDI_DATADIR/xsim/ip/system_cache_v5_0_11 +dp_videoaxi4s_bridge_v1_0_3=$RDI_DATADIR/xsim/ip/dp_videoaxi4s_bridge_v1_0_3 +sid_v8_0_21=$RDI_DATADIR/xsim/ip/sid_v8_0_21 +blk_mem_gen_v8_3_7=$RDI_DATADIR/xsim/ip/blk_mem_gen_v8_3_7 +noc2_sc_v1_0_0=$RDI_DATADIR/xsim/ip/noc2_sc_v1_0_0 diff --git a/proj/AudioProc.sim/sim_1/behav/xsim/xvhdl.log b/proj/AudioProc.sim/sim_1/behav/xsim/xvhdl.log new file mode 100644 index 0000000..c80084a --- /dev/null +++ b/proj/AudioProc.sim/sim_1/behav/xsim/xvhdl.log @@ -0,0 +1,6 @@ +INFO: [VRFC 10-163] Analyzing VHDL file "/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd" into library xil_defaultlib +INFO: [VRFC 10-3107] analyzing entity 'operativeUnit' +INFO: [VRFC 10-163] Analyzing VHDL file "/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd" into library xil_defaultlib +INFO: [VRFC 10-3107] analyzing entity 'firUnit' +INFO: [VRFC 10-163] Analyzing VHDL file "/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/tb_firUnit.vhd" into library xil_defaultlib +INFO: [VRFC 10-3107] analyzing entity 'tb_firUnit' diff --git a/proj/AudioProc.sim/sim_1/behav/xsim/xvhdl.pb b/proj/AudioProc.sim/sim_1/behav/xsim/xvhdl.pb new file mode 100644 index 0000000000000000000000000000000000000000..123cc48f4be058465ccf604a8505bc71e22ce897 GIT binary patch literal 859 zcmd-&&d8<Vn3tGSS(TZWt`O$o;-iq3nUkuZq*|<`keOGKuaJ|ORFqg$si0acz$(RT zXlAU%T~VBwTb5dsnU<Msl){yypOK%NTCAUJWRja$T%51(R9cjpSgK!Apj(!alB1iO znyMe_s+*gdlANCh5>3m@DJe?TO)V)+$xO^E(S>U)E=tzVNXgO9FGwv)EXgcO4b96e z(JRYHF%sb7tH{iWPf1NnEX^s&$xMo3Gc?dOG&9a%C}6E%oxsQ-z{KUxC7KBLN@`w7 zW=W-jx@xhy0IL*>k(s4As>AuYcv0+$VmCC<H8wObM>g^xrNI-&6+`vlNy{uEEnqxJ z3K&i<cBl<lgX9RML6XQ7PxT-vNs5QMnfT=5LsF>laB(3l!5T1pTwJbsDGEWU$@xVo G0*nA5ZVGY$ literal 0 HcmV?d00001 diff --git a/proj/AudioProc.sim/sim_1/behav/xsim/xvlog.log b/proj/AudioProc.sim/sim_1/behav/xsim/xvlog.log new file mode 100644 index 0000000..e69de29 diff --git a/proj/AudioProc.sim/sim_1/behav/xsim/xvlog.pb b/proj/AudioProc.sim/sim_1/behav/xsim/xvlog.pb new file mode 100644 index 0000000..b155e40 --- /dev/null +++ b/proj/AudioProc.sim/sim_1/behav/xsim/xvlog.pb @@ -0,0 +1,4 @@ + + + +End Record \ No newline at end of file diff --git a/proj/AudioProc.xpr b/proj/AudioProc.xpr new file mode 100644 index 0000000..8228398 --- /dev/null +++ b/proj/AudioProc.xpr @@ -0,0 +1,348 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Product Version: Vivado v2024.1 (64-bit) --> +<!-- --> +<!-- Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. --> +<!-- Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. --> + +<Project Product="Vivado" Version="7" Minor="67" Path="/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.xpr"> + <DefaultLaunch Dir="$PRUNDIR"/> + <Configuration> + <Option Name="Id" Val="401f8028668a44b7a81b7aaeec674740"/> + <Option Name="Part" Val="xc7a200tsbg484-1"/> + <Option Name="CompiledLibDir" Val="$PCACHEDIR/compile_simlib"/> + <Option Name="CompiledLibDirXSim" Val=""/> + <Option Name="CompiledLibDirModelSim" Val="$PCACHEDIR/compile_simlib/modelsim"/> + <Option Name="CompiledLibDirQuesta" Val="$PCACHEDIR/compile_simlib/questa"/> + <Option Name="CompiledLibDirXcelium" Val="$PCACHEDIR/compile_simlib/xcelium"/> + <Option Name="CompiledLibDirVCS" Val="$PCACHEDIR/compile_simlib/vcs"/> + <Option Name="CompiledLibDirRiviera" Val="$PCACHEDIR/compile_simlib/riviera"/> + <Option Name="CompiledLibDirActivehdl" Val="$PCACHEDIR/compile_simlib/activehdl"/> + <Option Name="SimulatorInstallDirModelSim" Val=""/> + <Option Name="SimulatorInstallDirQuesta" Val=""/> + <Option Name="SimulatorInstallDirXcelium" Val=""/> + <Option Name="SimulatorInstallDirVCS" Val=""/> + <Option Name="SimulatorInstallDirRiviera" Val=""/> + <Option Name="SimulatorInstallDirActiveHdl" Val=""/> + <Option Name="SimulatorGccInstallDirModelSim" Val=""/> + <Option Name="SimulatorGccInstallDirQuesta" Val=""/> + <Option Name="SimulatorGccInstallDirXcelium" Val=""/> + <Option Name="SimulatorGccInstallDirVCS" Val=""/> + <Option Name="SimulatorGccInstallDirRiviera" Val=""/> + <Option Name="SimulatorGccInstallDirActiveHdl" Val=""/> + <Option Name="SimulatorVersionXsim" Val="2024.1"/> + <Option Name="SimulatorVersionModelSim" Val="2023.2"/> + <Option Name="SimulatorVersionQuesta" Val="2023.2"/> + <Option Name="SimulatorVersionXcelium" Val="23.03.002"/> + <Option Name="SimulatorVersionVCS" Val="U-2023.03-1"/> + <Option Name="SimulatorVersionRiviera" Val="2023.04"/> + <Option Name="SimulatorVersionActiveHdl" Val="14.1"/> + <Option Name="SimulatorGccVersionXsim" Val="9.3.0"/> + <Option Name="SimulatorGccVersionModelSim" Val="7.4.0"/> + <Option Name="SimulatorGccVersionQuesta" Val="7.4.0"/> + <Option Name="SimulatorGccVersionXcelium" Val="9.3.0"/> + <Option Name="SimulatorGccVersionVCS" Val="9.2.0"/> + <Option Name="SimulatorGccVersionRiviera" Val="9.3.0"/> + <Option Name="SimulatorGccVersionActiveHdl" Val="9.3.0"/> + <Option Name="TargetLanguage" Val="VHDL"/> + <Option Name="BoardPart" Val=""/> + <Option Name="ActiveSimSet" Val="sim_1"/> + <Option Name="DefaultLib" Val="xil_defaultlib"/> + <Option Name="ProjectType" Val="Default"/> + <Option Name="IPRepoPath" Val="$PPRDIR/../repo"/> + <Option Name="IPOutputRepo" Val="$PCACHEDIR/ip"/> + <Option Name="IPDefaultOutputPath" Val="$PGENDIR/sources_1"/> + <Option Name="IPCachePermission" Val="read"/> + <Option Name="IPCachePermission" Val="write"/> + <Option Name="EnableCoreContainer" Val="FALSE"/> + <Option Name="EnableResourceEstimation" Val="FALSE"/> + <Option Name="SimCompileState" Val="TRUE"/> + <Option Name="CreateRefXciForCoreContainers" Val="FALSE"/> + <Option Name="IPUserFilesDir" Val="$PIPUSERFILESDIR"/> + <Option Name="IPStaticSourceDir" Val="$PIPUSERFILESDIR/ipstatic"/> + <Option Name="EnableBDX" Val="FALSE"/> + <Option Name="WTXSimLaunchSim" Val="17"/> + <Option Name="WTModelSimLaunchSim" Val="0"/> + <Option Name="WTQuestaLaunchSim" Val="0"/> + <Option Name="WTIesLaunchSim" Val="0"/> + <Option Name="WTVcsLaunchSim" Val="0"/> + <Option Name="WTRivieraLaunchSim" Val="0"/> + <Option Name="WTActivehdlLaunchSim" Val="0"/> + <Option Name="WTXSimExportSim" Val="1"/> + <Option Name="WTModelSimExportSim" Val="1"/> + <Option Name="WTQuestaExportSim" Val="1"/> + <Option Name="WTIesExportSim" Val="0"/> + <Option Name="WTVcsExportSim" Val="1"/> + <Option Name="WTRivieraExportSim" Val="1"/> + <Option Name="WTActivehdlExportSim" Val="1"/> + <Option Name="GenerateIPUpgradeLog" Val="TRUE"/> + <Option Name="XSimRadix" Val="hex"/> + <Option Name="XSimTimeUnit" Val="ns"/> + <Option Name="XSimArrayDisplayLimit" Val="1024"/> + <Option Name="XSimTraceLimit" Val="65536"/> + <Option Name="SimTypes" Val="rtl"/> + <Option Name="SimTypes" Val="bfm"/> + <Option Name="SimTypes" Val="tlm"/> + <Option Name="SimTypes" Val="tlm_dpi"/> + <Option Name="MEMEnableMemoryMapGeneration" Val="TRUE"/> + <Option Name="DcpsUptoDate" Val="TRUE"/> + <Option Name="ClassicSocBoot" Val="FALSE"/> + <Option Name="LocalIPRepoLeafDirName" Val="ip_repo"/> + </Configuration> + <FileSets Version="1" Minor="32"> + <FileSet Name="sources_1" Type="DesignSrcs" RelSrcDir="$PSRCDIR/sources_1" RelGenDir="$PGENDIR/sources_1"> + <Filter Type="Srcs"/> + <File Path="$PPRDIR/../src/hdl/audio_init.v"> + <FileInfo> + <Attr Name="UsedIn" Val="synthesis"/> + <Attr Name="UsedIn" Val="implementation"/> + <Attr Name="UsedIn" Val="simulation"/> + </FileInfo> + </File> + <File Path="$PPRDIR/../src/hdl/debounce.v"> + <FileInfo> + <Attr Name="UsedIn" Val="synthesis"/> + <Attr Name="UsedIn" Val="implementation"/> + <Attr Name="UsedIn" Val="simulation"/> + </FileInfo> + </File> + <File Path="$PPRDIR/../src/hdl/TWICtl.vhd"> + <FileInfo> + <Attr Name="UsedIn" Val="synthesis"/> + <Attr Name="UsedIn" Val="simulation"/> + </FileInfo> + </File> + <File Path="$PPRDIR/../src/hdl/controlUnit.vhd"> + <FileInfo> + <Attr Name="UsedIn" Val="synthesis"/> + <Attr Name="UsedIn" Val="simulation"/> + </FileInfo> + </File> + <File Path="$PPRDIR/../src/hdl/operativeUnit.vhd"> + <FileInfo> + <Attr Name="UsedIn" Val="synthesis"/> + <Attr Name="UsedIn" Val="simulation"/> + </FileInfo> + </File> + <File Path="$PPRDIR/../src/hdl/firUnit.vhd"> + <FileInfo> + <Attr Name="UsedIn" Val="synthesis"/> + <Attr Name="UsedIn" Val="simulation"/> + </FileInfo> + </File> + <File Path="$PPRDIR/../src/hdl/fir.vhd"> + <FileInfo> + <Attr Name="UsedIn" Val="synthesis"/> + <Attr Name="UsedIn" Val="simulation"/> + </FileInfo> + </File> + <File Path="$PPRDIR/../src/hdl/i2s_ctl.vhd"> + <FileInfo> + <Attr Name="UsedIn" Val="synthesis"/> + <Attr Name="UsedIn" Val="simulation"/> + </FileInfo> + </File> + <File Path="$PPRDIR/../src/hdl/audioProc.v"> + <FileInfo> + <Attr Name="UsedIn" Val="synthesis"/> + <Attr Name="UsedIn" Val="implementation"/> + <Attr Name="UsedIn" Val="simulation"/> + </FileInfo> + </File> + <File Path="$PPRDIR/../src/hdl/processingUnitIP.v"> + <FileInfo> + <Attr Name="AutoDisabled" Val="1"/> + <Attr Name="UsedIn" Val="synthesis"/> + <Attr Name="UsedIn" Val="implementation"/> + <Attr Name="UsedIn" Val="simulation"/> + </FileInfo> + </File> + <File Path="$PPRDIR/../src/hdl/tb_firUnit.vhd"> + <FileInfo> + <Attr Name="AutoDisabled" Val="1"/> + <Attr Name="UsedIn" Val="synthesis"/> + <Attr Name="UsedIn" Val="simulation"/> + </FileInfo> + </File> + <Config> + <Option Name="DesignMode" Val="RTL"/> + <Option Name="TopModule" Val="audioProc"/> + <Option Name="TopAutoSet" Val="TRUE"/> + </Config> + </FileSet> + <FileSet Name="constrs_1" Type="Constrs" RelSrcDir="$PSRCDIR/constrs_1" RelGenDir="$PGENDIR/constrs_1"> + <Filter Type="Constrs"/> + <File Path="$PPRDIR/../src/constraints/NexysVideo_Master.xdc"> + <FileInfo> + <Attr Name="UsedIn" Val="synthesis"/> + <Attr Name="UsedIn" Val="implementation"/> + </FileInfo> + </File> + <Config> + <Option Name="ConstrsType" Val="XDC"/> + </Config> + </FileSet> + <FileSet Name="sim_1" Type="SimulationSrcs" RelSrcDir="$PSRCDIR/sim_1" RelGenDir="$PGENDIR/sim_1"> + <File Path="$PPRDIR/tb_firUnit_behav.wcfg"> + <FileInfo> + <Attr Name="UsedIn" Val="simulation"/> + </FileInfo> + </File> + <Config> + <Option Name="DesignMode" Val="RTL"/> + <Option Name="TopModule" Val="tb_firUnit"/> + <Option Name="TopLib" Val="xil_defaultlib"/> + <Option Name="TransportPathDelay" Val="0"/> + <Option Name="TransportIntDelay" Val="0"/> + <Option Name="SelectedSimModel" Val="rtl"/> + <Option Name="PamDesignTestbench" Val=""/> + <Option Name="PamDutBypassFile" Val="xil_dut_bypass"/> + <Option Name="PamSignalDriverFile" Val="xil_bypass_driver"/> + <Option Name="PamPseudoTop" Val="pseudo_tb"/> + <Option Name="SrcSet" Val="sources_1"/> + <Option Name="XSimWcfgFile" Val="$PPRDIR/tb_firUnit_behav.wcfg"/> + </Config> + </FileSet> + <FileSet Name="utils_1" Type="Utils" RelSrcDir="$PSRCDIR/utils_1" RelGenDir="$PGENDIR/utils_1"> + <Filter Type="Utils"/> + <Config> + <Option Name="TopAutoSet" Val="TRUE"/> + </Config> + </FileSet> + <FileSet Name="clk_wiz_0" Type="BlockSrcs" RelSrcDir="$PSRCDIR/clk_wiz_0" RelGenDir="$PGENDIR/clk_wiz_0"> + <File Path="$PPRDIR/../src/ip/clk_wiz_0/clk_wiz_0.xci"> + <FileInfo> + <Attr Name="UsedIn" Val="synthesis"/> + <Attr Name="UsedIn" Val="implementation"/> + <Attr Name="UsedIn" Val="simulation"/> + </FileInfo> + </File> + <Config> + <Option Name="TopModule" Val="clk_wiz_0"/> + <Option Name="UseBlackboxStub" Val="1"/> + </Config> + </FileSet> + </FileSets> + <Simulators> + <Simulator Name="XSim"> + <Option Name="Description" Val="Vivado Simulator"/> + <Option Name="CompiledLib" Val="0"/> + </Simulator> + <Simulator Name="ModelSim"> + <Option Name="Description" Val="ModelSim Simulator"/> + </Simulator> + <Simulator Name="Questa"> + <Option Name="Description" Val="Questa Advanced Simulator"/> + </Simulator> + <Simulator Name="Xcelium"> + <Option Name="Description" Val="Xcelium Parallel Simulator"/> + </Simulator> + <Simulator Name="VCS"> + <Option Name="Description" Val="Verilog Compiler Simulator (VCS)"/> + </Simulator> + <Simulator Name="Riviera"> + <Option Name="Description" Val="Riviera-PRO Simulator"/> + </Simulator> + </Simulators> + <Runs Version="1" Minor="22"> + <Run Id="synth_1" Type="Ft3:Synth" SrcSet="sources_1" Part="xc7a200tsbg484-1" ConstrsSet="constrs_1" Description="Higher performance designs, resource sharing is turned off, the global fanout guide is set to a lower number, FSM extraction forced to one-hot, LUT combining is disabled, equivalent registers are preserved, SRL are inferred with a larger threshold" AutoIncrementalCheckpoint="true" WriteIncrSynthDcp="false" State="current" IncludeInArchive="true" IsChild="false" AutoIncrementalDir="$PSRCDIR/utils_1/imports/synth_1" AutoRQSDir="$PSRCDIR/utils_1/imports/synth_1" ParallelReportGen="true"> + <Strategy Version="1" Minor="2"> + <StratHandle Name="Flow_PerfOptimized_High" Flow="Vivado Synthesis 2014"> + <Desc>Higher performance designs, resource sharing is turned off, the global fanout guide is set to a lower number, FSM extraction forced to one-hot, LUT combining is disabled, equivalent registers are preserved, SRL are inferred with a larger threshold</Desc> + </StratHandle> + <Step Id="synth_design"> + <Option Id="FsmExtraction">1</Option> + <Option Id="KeepEquivalentRegisters">1</Option> + <Option Id="NoCombineLuts">1</Option> + <Option Id="RepFanoutThreshold">400</Option> + <Option Id="ResourceSharing">2</Option> + <Option Id="ShregMinSize">5</Option> + </Step> + </Strategy> + <ReportStrategy Name="Vivado Synthesis Default Reports" Flow="Vivado Synthesis 2017"/> + <Report Name="ROUTE_DESIGN.REPORT_METHODOLOGY" Enabled="1"/> + <RQSFiles/> + </Run> + <Run Id="clk_wiz_0_synth_1" Type="Ft3:Synth" SrcSet="clk_wiz_0" Part="xc7a200tsbg484-1" ConstrsSet="clk_wiz_0" Description="Vivado Synthesis Defaults" AutoIncrementalCheckpoint="false" WriteIncrSynthDcp="false" Dir="$PRUNDIR/clk_wiz_0_synth_1" IncludeInArchive="true" IsChild="false" AutoIncrementalDir="$PSRCDIR/utils_1/imports/clk_wiz_0_synth_1" AutoRQSDir="$PSRCDIR/utils_1/imports/clk_wiz_0_synth_1" ParallelReportGen="true"> + <Strategy Version="1" Minor="2"> + <StratHandle Name="Vivado Synthesis Defaults" Flow="Vivado Synthesis 2024"> + <Desc>Vivado Synthesis Defaults</Desc> + </StratHandle> + <Step Id="synth_design"/> + </Strategy> + <GeneratedRun Dir="$PRUNDIR" File="gen_run.xml"/> + <ReportStrategy Name="Vivado Synthesis Default Reports" Flow="Vivado Synthesis 2024"/> + <Report Name="ROUTE_DESIGN.REPORT_METHODOLOGY" Enabled="1"/> + <RQSFiles/> + </Run> + <Run Id="impl_1" Type="Ft2:EntireDesign" Part="xc7a200tsbg484-1" ConstrsSet="constrs_1" Description="Vivado Implementation Defaults" AutoIncrementalCheckpoint="false" WriteIncrSynthDcp="false" State="current" SynthRun="synth_1" IncludeInArchive="true" IsChild="false" GenFullBitstream="true" AutoIncrementalDir="$PSRCDIR/utils_1/imports/impl_1" AutoRQSDir="$PSRCDIR/utils_1/imports/impl_1" ParallelReportGen="true"> + <Strategy Version="1" Minor="2"> + <StratHandle Name="Vivado Implementation Defaults" Flow="Vivado Implementation 2014"> + <Desc>Vivado Implementation Defaults</Desc> + </StratHandle> + <Step Id="init_design"/> + <Step Id="opt_design"/> + <Step Id="power_opt_design"/> + <Step Id="place_design"/> + <Step Id="post_place_power_opt_design"/> + <Step Id="phys_opt_design"/> + <Step Id="route_design"/> + <Step Id="post_route_phys_opt_design"/> + <Step Id="write_bitstream"> + <Option Id="BinFile">1</Option> + </Step> + </Strategy> + <ReportStrategy Name="Vivado Implementation Default Reports" Flow="Vivado Implementation 2017"/> + <Report Name="ROUTE_DESIGN.REPORT_METHODOLOGY" Enabled="1"/> + <RQSFiles/> + </Run> + <Run Id="clk_wiz_0_impl_1" Type="Ft2:EntireDesign" Part="xc7a200tsbg484-1" ConstrsSet="clk_wiz_0" Description="Default settings for Implementation." AutoIncrementalCheckpoint="false" WriteIncrSynthDcp="false" SynthRun="clk_wiz_0_synth_1" IncludeInArchive="false" IsChild="false" GenFullBitstream="true" AutoIncrementalDir="$PSRCDIR/utils_1/imports/clk_wiz_0_impl_1" AutoRQSDir="$PSRCDIR/utils_1/imports/clk_wiz_0_impl_1" ParallelReportGen="true"> + <Strategy Version="1" Minor="2"> + <StratHandle Name="Vivado Implementation Defaults" Flow="Vivado Implementation 2024"> + <Desc>Default settings for Implementation.</Desc> + </StratHandle> + <Step Id="init_design"/> + <Step Id="opt_design"/> + <Step Id="power_opt_design"/> + <Step Id="place_design"/> + <Step Id="post_place_power_opt_design"/> + <Step Id="phys_opt_design"/> + <Step Id="route_design"/> + <Step Id="post_route_phys_opt_design"/> + <Step Id="write_bitstream"/> + </Strategy> + <ReportStrategy Name="Vivado Implementation Default Reports" Flow="Vivado Implementation 2024"/> + <Report Name="ROUTE_DESIGN.REPORT_METHODOLOGY" Enabled="1"/> + <RQSFiles/> + </Run> + </Runs> + <Board/> + <DashboardSummary Version="1" Minor="0"> + <Dashboards> + <Dashboard Name="default_dashboard"> + <Gadgets> + <Gadget Name="drc_1" Type="drc" Version="1" Row="2" Column="0"> + <GadgetParam Name="REPORTS" Type="string_list" Value="impl_1#impl_1_route_report_drc_0 "/> + </Gadget> + <Gadget Name="methodology_1" Type="methodology" Version="1" Row="2" Column="1"> + <GadgetParam Name="REPORTS" Type="string_list" Value="impl_1#impl_1_route_report_methodology_0 "/> + </Gadget> + <Gadget Name="power_1" Type="power" Version="1" Row="1" Column="0"> + <GadgetParam Name="REPORTS" Type="string_list" Value="impl_1#impl_1_route_report_power_0 "/> + </Gadget> + <Gadget Name="timing_1" Type="timing" Version="1" Row="0" Column="1"> + <GadgetParam Name="REPORTS" Type="string_list" Value="impl_1#impl_1_route_report_timing_summary_0 "/> + </Gadget> + <Gadget Name="utilization_1" Type="utilization" Version="1" Row="0" Column="0"> + <GadgetParam Name="REPORTS" Type="string_list" Value="synth_1#synth_1_synth_report_utilization_0 "/> + <GadgetParam Name="RUN.STEP" Type="string" Value="synth_design"/> + <GadgetParam Name="RUN.TYPE" Type="string" Value="synthesis"/> + </Gadget> + <Gadget Name="utilization_2" Type="utilization" Version="1" Row="1" Column="1"> + <GadgetParam Name="REPORTS" Type="string_list" Value="impl_1#impl_1_place_report_utilization_0 "/> + </Gadget> + </Gadgets> + </Dashboard> + <CurrentDashboard>default_dashboard</CurrentDashboard> + </Dashboards> + </DashboardSummary> +</Project> diff --git a/proj/ip_upgrade.log b/proj/ip_upgrade.log new file mode 100644 index 0000000..844ce36 --- /dev/null +++ b/proj/ip_upgrade.log @@ -0,0 +1,27 @@ +Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. +--------------------------------------------------------------------------------------------------------------------------------------------- +| Tool Version : Vivado v.2024.1 (lin64) Build 5076996 Wed May 22 18:36:09 MDT 2024 +| Date : Wed Feb 26 11:52:51 2025 +| Host : fl-tp-br-604 running 64-bit Ubuntu 24.04.1 LTS +| Command : upgrade_ip +| Device : xc7a200tsbg484-1 +--------------------------------------------------------------------------------------------------------------------------------------------- + +Upgrade Log for IP 'clk_wiz_0' + +1. Summary +---------- + +CAUTION (success, with warnings) in the upgrade of clk_wiz_0 from xilinx.com:ip:clk_wiz:5.2 to xilinx.com:ip:clk_wiz:6.0 (Rev. 14) + +After upgrade, an IP may have parameter and port differences compared to the original customization. Please review the parameters within the IP customization GUI to ensure proper functionality. Also, please review the updated IP instantiation template to ensure proper connectivity, and update your design if required. + +2. Connection Warnings +---------------------- + +Detected external port differences while upgrading 'clk_wiz_0'. These changes may impact your design. + + +-Upgraded port order differs after port 'reset' + + diff --git a/proj/tb_firUnit_behav.wcfg b/proj/tb_firUnit_behav.wcfg new file mode 100644 index 0000000..f90eed5 --- /dev/null +++ b/proj/tb_firUnit_behav.wcfg @@ -0,0 +1,95 @@ +<?xml version="1.0" encoding="UTF-8"?> +<wave_config> + <wave_state> + </wave_state> + <db_ref_list> + <db_ref path="tb_firUnit_behav.wdb" id="1"> + <top_modules> + <top_module name="glbl" /> + <top_module name="tb_firUnit" /> + </top_modules> + </db_ref> + </db_ref_list> + <zoom_setting> + <ZoomStartTime time="0.000 ns"></ZoomStartTime> + <ZoomEndTime time="325.501 ns"></ZoomEndTime> + <Cursor1Time time="141.500 ns"></Cursor1Time> + </zoom_setting> + <column_width_setting> + <NameColumnWidth column_width="195"></NameColumnWidth> + <ValueColumnWidth column_width="60"></ValueColumnWidth> + </column_width_setting> + <WVObjectSize size="18" /> + <wvobject type="logic" fp_name="/tb_firUnit/SC_clock"> + <obj_property name="ElementShortName">SC_clock</obj_property> + <obj_property name="ObjectShortName">SC_clock</obj_property> + </wvobject> + <wvobject type="logic" fp_name="/tb_firUnit/SC_reset"> + <obj_property name="ElementShortName">SC_reset</obj_property> + <obj_property name="ObjectShortName">SC_reset</obj_property> + </wvobject> + <wvobject type="array" fp_name="/tb_firUnit/SC_inputSample"> + <obj_property name="ElementShortName">SC_inputSample[7:0]</obj_property> + <obj_property name="ObjectShortName">SC_inputSample[7:0]</obj_property> + </wvobject> + <wvobject type="logic" fp_name="/tb_firUnit/SC_inputSampleValid"> + <obj_property name="ElementShortName">SC_inputSampleValid</obj_property> + <obj_property name="ObjectShortName">SC_inputSampleValid</obj_property> + </wvobject> + <wvobject type="array" fp_name="/tb_firUnit/SC_filteredSample"> + <obj_property name="ElementShortName">SC_filteredSample[7:0]</obj_property> + <obj_property name="ObjectShortName">SC_filteredSample[7:0]</obj_property> + </wvobject> + <wvobject type="logic" fp_name="/tb_firUnit/SC_filteredSampleValid"> + <obj_property name="ElementShortName">SC_filteredSampleValid</obj_property> + <obj_property name="ObjectShortName">SC_filteredSampleValid</obj_property> + </wvobject> + <wvobject type="logic" fp_name="/tb_firUnit/firUnit_1/operativeUnit_1/O_processingDone"> + <obj_property name="ElementShortName">O_processingDone</obj_property> + <obj_property name="ObjectShortName">O_processingDone</obj_property> + </wvobject> + <wvobject type="array" fp_name="/tb_firUnit/firUnit_1/operativeUnit_1/O_Y"> + <obj_property name="ElementShortName">O_Y[7:0]</obj_property> + <obj_property name="ObjectShortName">O_Y[7:0]</obj_property> + </wvobject> + <wvobject type="array" fp_name="/tb_firUnit/firUnit_1/operativeUnit_1/SR_coefRegister"> + <obj_property name="ElementShortName">SR_coefRegister[0:15][7:0]</obj_property> + <obj_property name="ObjectShortName">SR_coefRegister[0:15][7:0]</obj_property> + </wvobject> + <wvobject type="array" fp_name="/tb_firUnit/firUnit_1/operativeUnit_1/SR_shiftRegister"> + <obj_property name="ElementShortName">SR_shiftRegister[0:15][7:0]</obj_property> + <obj_property name="ObjectShortName">SR_shiftRegister[0:15][7:0]</obj_property> + </wvobject> + <wvobject type="array" fp_name="/tb_firUnit/firUnit_1/operativeUnit_1/SC_multOperand1"> + <obj_property name="ElementShortName">SC_multOperand1[7:0]</obj_property> + <obj_property name="ObjectShortName">SC_multOperand1[7:0]</obj_property> + </wvobject> + <wvobject type="array" fp_name="/tb_firUnit/firUnit_1/operativeUnit_1/SC_multOperand2"> + <obj_property name="ElementShortName">SC_multOperand2[7:0]</obj_property> + <obj_property name="ObjectShortName">SC_multOperand2[7:0]</obj_property> + </wvobject> + <wvobject type="array" fp_name="/tb_firUnit/firUnit_1/operativeUnit_1/SC_MultResult"> + <obj_property name="ElementShortName">SC_MultResult[15:0]</obj_property> + <obj_property name="ObjectShortName">SC_MultResult[15:0]</obj_property> + </wvobject> + <wvobject type="array" fp_name="/tb_firUnit/firUnit_1/operativeUnit_1/SC_addResult"> + <obj_property name="ElementShortName">SC_addResult[19:0]</obj_property> + <obj_property name="ObjectShortName">SC_addResult[19:0]</obj_property> + </wvobject> + <wvobject type="array" fp_name="/tb_firUnit/firUnit_1/operativeUnit_1/SR_sum"> + <obj_property name="ElementShortName">SR_sum[19:0]</obj_property> + <obj_property name="ObjectShortName">SR_sum[19:0]</obj_property> + </wvobject> + <wvobject type="array" fp_name="/tb_firUnit/firUnit_1/operativeUnit_1/SR_Y"> + <obj_property name="ElementShortName">SR_Y[7:0]</obj_property> + <obj_property name="ObjectShortName">SR_Y[7:0]</obj_property> + </wvobject> + <wvobject type="logic" fp_name="/tb_firUnit/firUnit_1/operativeUnit_1/I_loadY"> + <obj_property name="ElementShortName">I_loadY</obj_property> + <obj_property name="ObjectShortName">I_loadY</obj_property> + </wvobject> + <wvobject type="other" fp_name="/tb_firUnit/firUnit_1/operativeUnit_1/SR_readAddress"> + <obj_property name="ElementShortName">SR_readAddress</obj_property> + <obj_property name="ObjectShortName">SR_readAddress</obj_property> + </wvobject> +</wave_config> diff --git a/proj/vivado.jou b/proj/vivado.jou new file mode 100644 index 0000000..d54a508 --- /dev/null +++ b/proj/vivado.jou @@ -0,0 +1,83 @@ +#----------------------------------------------------------- +# Vivado v2024.1 (64-bit) +# SW Build 5076996 on Wed May 22 18:36:09 MDT 2024 +# IP Build 5075265 on Wed May 22 21:45:21 MDT 2024 +# SharedData Build 5076995 on Wed May 22 18:29:18 MDT 2024 +# Start of session at: Wed Feb 26 09:59:54 2025 +# Process ID: 10833 +# Current directory: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj +# Command line: vivado +# Log file: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/vivado.log +# Journal file: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/vivado.jou +# Running On :fl-tp-br-604 +# Platform :Ubuntu +# Operating System :Ubuntu 24.04.1 LTS +# Processor Detail :Intel(R) Core(TM) i5-10500 CPU @ 3.10GHz +# CPU Frequency :1998.882 MHz +# CPU Physical cores:6 +# CPU Logical cores :12 +# Host memory :16467 MB +# Swap memory :4294 MB +# Total Virtual :20762 MB +# Available Virtual :17455 MB +#----------------------------------------------------------- +start_gui +source ./create_project.tcl +update_compile_order -fileset sources_1 +update_compile_order -fileset sources_1 +update_ip_catalog -rebuild -scan_changes +report_ip_status -name ip_status +upgrade_ip -vlnv xilinx.com:ip:clk_wiz:6.0 [get_ips clk_wiz_0] -log ip_upgrade.log +export_ip_user_files -of_objects [get_ips clk_wiz_0] -no_script -sync -force -quiet +generate_target all [get_files /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0.xci] +catch { config_ip_cache -export [get_ips -all clk_wiz_0] } +export_ip_user_files -of_objects [get_files /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0.xci] -no_script -sync -force -quiet +create_ip_run [get_files -of_objects [get_fileset sources_1] /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0.xci] +launch_runs clk_wiz_0_synth_1 -jobs 2 +wait_on_run clk_wiz_0_synth_1 +export_simulation -of_objects [get_files /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0.xci] -directory /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.ip_user_files/sim_scripts -ip_user_files_dir /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.ip_user_files -ipstatic_source_dir /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.ip_user_files/ipstatic -lib_map_path [list {modelsim=/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.cache/compile_simlib/modelsim} {questa=/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.cache/compile_simlib/questa} {xcelium=/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.cache/compile_simlib/xcelium} {vcs=/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.cache/compile_simlib/vcs} {riviera=/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.cache/compile_simlib/riviera}] -use_ip_compiled_libs -force -quiet +# Disabling source management mode. This is to allow the top design properties to be set without GUI intervention. +set_property source_mgmt_mode None [current_project] +set_property top tb_firUnit [get_filesets sim_1] +set_property top_lib xil_defaultlib [get_filesets sim_1] +# Re-enabling previously disabled source management mode. +set_property source_mgmt_mode All [current_project] +report_ip_status -name ip_status +launch_simulation +source tb_firUnit.tcl +run 10 us +run 10 us +run 10 us +run 10 us +run 10 us +run 10 us +relaunch_sim +close_sim +launch_simulation +source tb_firUnit.tcl +relaunch_sim +current_wave_config {Untitled 2} +add_wave {{/tb_firUnit/firUnit_1/controlUnit_1/SR_presentState}} +relaunch_sim +run 10 us +current_wave_config {Untitled 2} +add_wave {{/tb_firUnit/firUnit_1/operativeUnit_1/SR_readAddress}} +relaunch_sim +close_sim +launch_simulation +source tb_firUnit.tcl +current_wave_config {Untitled 3} +add_wave {{/tb_firUnit/firUnit_1/operativeUnit_1/O_processingDone}} {{/tb_firUnit/firUnit_1/operativeUnit_1/O_Y}} {{/tb_firUnit/firUnit_1/operativeUnit_1/SR_coefRegister}} {{/tb_firUnit/firUnit_1/operativeUnit_1/SR_shiftRegister}} {{/tb_firUnit/firUnit_1/operativeUnit_1/SC_multOperand1}} {{/tb_firUnit/firUnit_1/operativeUnit_1/SC_multOperand2}} {{/tb_firUnit/firUnit_1/operativeUnit_1/SC_MultResult}} {{/tb_firUnit/firUnit_1/operativeUnit_1/SC_addResult}} {{/tb_firUnit/firUnit_1/operativeUnit_1/SR_sum}} {{/tb_firUnit/firUnit_1/operativeUnit_1/SR_Y}} +relaunch_sim +current_wave_config {Untitled 3} +add_wave {{/tb_firUnit/firUnit_1/operativeUnit_1/I_loadY}} +relaunch_sim +relaunch_sim +current_wave_config {Untitled 3} +add_wave {{/tb_firUnit/firUnit_1/operativeUnit_1/SR_readAddress}} +restart +run 10 us +save_wave_config {/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/tb_firUnit_behav.wcfg} +add_files -fileset sim_1 -norecurse /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/tb_firUnit_behav.wcfg +set_property xsim.view /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/tb_firUnit_behav.wcfg [get_filesets sim_1] +close_sim diff --git a/proj/vivado.log b/proj/vivado.log new file mode 100644 index 0000000..0f12558 --- /dev/null +++ b/proj/vivado.log @@ -0,0 +1,1724 @@ +#----------------------------------------------------------- +# Vivado v2024.1 (64-bit) +# SW Build 5076996 on Wed May 22 18:36:09 MDT 2024 +# IP Build 5075265 on Wed May 22 21:45:21 MDT 2024 +# SharedData Build 5076995 on Wed May 22 18:29:18 MDT 2024 +# Start of session at: Wed Feb 26 09:59:54 2025 +# Process ID: 10833 +# Current directory: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj +# Command line: vivado +# Log file: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/vivado.log +# Journal file: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/vivado.jou +# Running On :fl-tp-br-604 +# Platform :Ubuntu +# Operating System :Ubuntu 24.04.1 LTS +# Processor Detail :Intel(R) Core(TM) i5-10500 CPU @ 3.10GHz +# CPU Frequency :1998.882 MHz +# CPU Physical cores:6 +# CPU Logical cores :12 +# Host memory :16467 MB +# Swap memory :4294 MB +# Total Virtual :20762 MB +# Available Virtual :17455 MB +#----------------------------------------------------------- +start_gui +WARNING: [Board 49-26] cannot add Board Part xilinx.com:vek280_es:part0:1.0 available at /usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/xhub/boards/XilinxBoardStore/boards/Xilinx/vek280/es/rev_a/1.0/board.xml as part xcve2802-vsvh1760-2lp-e-s-es1 specified in board_part file is either invalid or not available +WARNING: [Board 49-26] cannot add Board Part xilinx.com:vek280_es:part0:1.1 available at /usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/xhub/boards/XilinxBoardStore/boards/Xilinx/vek280/es/rev_a/1.1/board.xml as part xcve2802-vsvh1760-2lp-e-s-es1 specified in board_part file is either invalid or not available +WARNING: [Board 49-26] cannot add Board Part xilinx.com:vek280_es_revb:part0:1.0 available at /usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/xhub/boards/XilinxBoardStore/boards/Xilinx/vek280/es/rev_b/1.0/board.xml as part xcve2802-vsvh1760-2mp-e-s-es1 specified in board_part file is either invalid or not available +WARNING: [Board 49-26] cannot add Board Part xilinx.com:vek280_es_revb:part0:1.1 available at /usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/xhub/boards/XilinxBoardStore/boards/Xilinx/vek280/es/rev_b/1.1/board.xml as part xcve2802-vsvh1760-2mp-e-s-es1 specified in board_part file is either invalid or not available +WARNING: [Board 49-26] cannot add Board Part xilinx.com:vhk158_es:part0:1.0 available at /usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/xhub/boards/XilinxBoardStore/boards/Xilinx/vhk158/es/1.0/board.xml as part xcvh1582-vsva3697-2mp-e-s-es1 specified in board_part file is either invalid or not available +WARNING: [Board 49-26] cannot add Board Part xilinx.com:vhk158_es:part0:1.1 available at /usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/xhub/boards/XilinxBoardStore/boards/Xilinx/vhk158/es/1.1/board.xml as part xcvh1582-vsva3697-2mp-e-s-es1 specified in board_part file is either invalid or not available +WARNING: [Board 49-26] cannot add Board Part xilinx.com:zcu208ld:part0:2.0 available at /usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/xhub/boards/XilinxBoardStore/boards/Xilinx/zcu208ld/production/2.0/board.xml as part xczu58dr-fsvg1517-2-i specified in board_part file is either invalid or not available +WARNING: [Board 49-26] cannot add Board Part xilinx.com:zcu216ld:part0:2.0 available at /usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/xhub/boards/XilinxBoardStore/boards/Xilinx/zcu216ld/production/2.0/board.xml as part xczu59dr-ffvf1760-2-i specified in board_part file is either invalid or not available +WARNING: [Board 49-26] cannot add Board Part xilinx.com:zcu670ld:part0:1.0 available at /usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/xhub/boards/XilinxBoardStore/boards/Xilinx/zcu670ld/1.0/board.xml as part xczu57dr-fsve1156-2-i specified in board_part file is either invalid or not available +source ./create_project.tcl +# if {[info exists ::create_path]} { +# set dest_dir $::create_path +# } else { +# set dest_dir [pwd] +# } +# puts "INFO: Creating new project in $dest_dir" +INFO: Creating new project in /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj +# set proj_name "AudioProc" +# set origin_dir ".." +# set orig_proj_dir "[file normalize "$origin_dir/proj"]" +# set src_dir $origin_dir/src +# set repo_dir $origin_dir/repo +# set part_num "xc7a200tsbg484-1" +# create_project $proj_name $dest_dir +INFO: [IP_Flow 19-234] Refreshing IP repositories +INFO: [IP_Flow 19-1704] No user IP repositories specified +INFO: [IP_Flow 19-2313] Loaded Vivado IP repository '/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/ip'. +# set proj_dir [get_property directory [current_project]] +# set obj [get_projects $proj_name] +# set_property "default_lib" "xil_defaultlib" $obj +# set_property "part" "$part_num" $obj +# set_property "simulator_language" "Mixed" $obj +# set_property "target_language" "VHDL" $obj +# if {[string equal [get_filesets -quiet sources_1] ""]} { +# create_fileset -srcset sources_1 +# } +# if {[string equal [get_filesets -quiet constrs_1] ""]} { +# create_fileset -constrset constrs_1 +# } +# set obj [get_filesets sources_1] +# set_property "ip_repo_paths" "[file normalize $repo_dir]" $obj +# add_files -quiet $src_dir/hdl +# add_files -quiet [glob -nocomplain ../src/ip/*/*.xci] +# add_files -fileset constrs_1 -quiet $src_dir/constraints +# if {[string equal [get_runs -quiet synth_1] ""]} { +# create_run -name synth_1 -part $part_num -flow {Vivado Synthesis 2014} -strategy "Flow_PerfOptimized_High" -constrset constrs_1 +# } else { +# set_property strategy "Flow_PerfOptimized_High" [get_runs synth_1] +# set_property flow "Vivado Synthesis 2014" [get_runs synth_1] +# } +# set obj [get_runs synth_1] +# set_property "part" "$part_num" $obj +# set_property "steps.synth_design.args.fanout_limit" "400" $obj +# set_property "steps.synth_design.args.fsm_extraction" "one_hot" $obj +# set_property "steps.synth_design.args.keep_equivalent_registers" "1" $obj +# set_property "steps.synth_design.args.resource_sharing" "off" $obj +# set_property "steps.synth_design.args.no_lc" "1" $obj +# set_property "steps.synth_design.args.shreg_min_size" "5" $obj +# current_run -synthesis [get_runs synth_1] +# if {[string equal [get_runs -quiet impl_1] ""]} { +# create_run -name impl_1 -part $part_num -flow {Vivado Implementation 2014} -strategy "Vivado Implementation Defaults" -constrset constrs_1 -parent_run synth_1 +# } else { +# set_property strategy "Vivado Implementation Defaults" [get_runs impl_1] +# set_property flow "Vivado Implementation 2014" [get_runs impl_1] +# } +# set obj [get_runs impl_1] +# set_property "part" "$part_num" $obj +# set_property "steps.write_bitstream.args.bin_file" "1" $obj +# current_run -implementation [get_runs impl_1] +impl_1 +update_compile_order -fileset sources_1 +update_compile_order -fileset sources_1 +update_ip_catalog -rebuild -scan_changes +INFO: [IP_Flow 19-234] Refreshing IP repositories +WARNING: [IP_Flow 19-2248] Failed to load user IP repository '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/repo'; Can't find the specified path. +If this directory should no longer be in your list of user repositories, go to the IP Settings dialog and remove it. +report_ip_status -name ip_status +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +upgrade_ip -vlnv xilinx.com:ip:clk_wiz:6.0 [get_ips clk_wiz_0] -log ip_upgrade.log +Upgrading 'clk_wiz_0' +INFO: [Device 21-403] Loading part xc7a200tsbg484-1 +INFO: [Device 21-9227] Part: xc7a200tsbg484-1 does not have CEAM library. +INFO: [IP_Flow 19-1972] Upgraded clk_wiz_0 from Clocking Wizard 5.2 to Clocking Wizard 6.0 +WARNING: [IP_Flow 19-4707] Upgraded port order differs after port 'reset' +WARNING: [IP_Flow 19-3298] Detected external port differences while upgrading 'clk_wiz_0'. These changes may impact your design. +INFO: [IP_Flow 19-1686] Generating 'Instantiation Template' target for IP 'clk_wiz_0'... +CRITICAL WARNING: [Coretcl 2-1279] The upgrade of 'clk_wiz_0' has identified issues that may require user intervention. Please review the upgrade log '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/ip_upgrade.log', and verify that the upgraded IP is correctly configured. +INFO: [Coretcl 2-1525] Wrote upgrade log to '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/ip_upgrade.log'. +upgrade_ip: Time (s): cpu = 00:00:07 ; elapsed = 00:00:18 . Memory (MB): peak = 10092.996 ; gain = 336.473 ; free physical = 6200 ; free virtual = 14742 +export_ip_user_files -of_objects [get_ips clk_wiz_0] -no_script -sync -force -quiet +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +generate_target all [get_files /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0.xci] +INFO: [IP_Flow 19-1686] Generating 'Synthesis' target for IP 'clk_wiz_0'... +INFO: [IP_Flow 19-1686] Generating 'Simulation' target for IP 'clk_wiz_0'... +INFO: [IP_Flow 19-1686] Generating 'Implementation' target for IP 'clk_wiz_0'... +INFO: [IP_Flow 19-1686] Generating 'Change Log' target for IP 'clk_wiz_0'... +catch { config_ip_cache -export [get_ips -all clk_wiz_0] } +INFO: [IP_Flow 19-6924] IPCACHE: Running cache check for IP inst: clk_wiz_0 +export_ip_user_files -of_objects [get_files /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0.xci] -no_script -sync -force -quiet +create_ip_run [get_files -of_objects [get_fileset sources_1] /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0.xci] +launch_runs clk_wiz_0_synth_1 -jobs 2 +INFO: [IP_Flow 19-6924] IPCACHE: Running cache check for IP inst: clk_wiz_0 +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +[Wed Feb 26 11:53:03 2025] Launched clk_wiz_0_synth_1... +Run output will be captured here: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.runs/clk_wiz_0_synth_1/runme.log +export_simulation -of_objects [get_files /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0.xci] -directory /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.ip_user_files/sim_scripts -ip_user_files_dir /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.ip_user_files -ipstatic_source_dir /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.ip_user_files/ipstatic -lib_map_path [list {modelsim=/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.cache/compile_simlib/modelsim} {questa=/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.cache/compile_simlib/questa} {xcelium=/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.cache/compile_simlib/xcelium} {vcs=/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.cache/compile_simlib/vcs} {riviera=/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.cache/compile_simlib/riviera}] -use_ip_compiled_libs -force -quiet +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +set_property top tb_firUnit [get_filesets sim_1] +set_property top_lib xil_defaultlib [get_filesets sim_1] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/processingUnitIP.v:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/processingUnitIP.v:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/processingUnitIP.v:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +report_ip_status -name ip_status +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/processingUnitIP.v:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/processingUnitIP.v:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/processingUnitIP.v:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +launch_simulation +Command: launch_simulation +INFO: [Vivado 12-12493] Simulation top is 'tb_firUnit' +INFO: [Vivado 12-5698] Checking validity of IPs in the design for the 'XSim' simulator... +INFO: [Vivado 12-5682] Launching behavioral simulation in '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +INFO: [Vivado 12-4795] Using compiled simulation libraries for IPs +INFO: [SIM-utils-51] Simulation object is 'sim_1' +INFO: [SIM-utils-72] Using boost library from '/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/tps/boost_1_72_0' +INFO: [USF-XSim-7] Finding pre-compiled libraries... +INFO: [USF-XSim-11] File '/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/xsim/xsim.ini' copied to run dir:'/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +INFO: [SIM-utils-54] Inspecting design source files for 'tb_firUnit' in fileset 'sim_1'... +INFO: [USF-XSim-97] Finding global include files... +INFO: [USF-XSim-98] Fetching design files from 'sim_1'... +INFO: [USF-XSim-2] XSim::Compile design +INFO: [USF-XSim-61] Executing 'COMPILE and ANALYZE' step in '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +xvlog --incr --relax -prj tb_firUnit_vlog.prj +INFO: [VRFC 10-2263] Analyzing Verilog file "/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim/glbl.v" into library xil_defaultlib +INFO: [VRFC 10-311] analyzing module glbl +xvhdl --incr --relax -prj tb_firUnit_vhdl.prj +INFO: [VRFC 10-163] Analyzing VHDL file "/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd" into library xil_defaultlib +INFO: [VRFC 10-3107] analyzing entity 'controlUnit' +INFO: [VRFC 10-163] Analyzing VHDL file "/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd" into library xil_defaultlib +INFO: [VRFC 10-3107] analyzing entity 'operativeUnit' +INFO: [VRFC 10-163] Analyzing VHDL file "/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd" into library xil_defaultlib +INFO: [VRFC 10-3107] analyzing entity 'firUnit' +INFO: [VRFC 10-163] Analyzing VHDL file "/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/tb_firUnit.vhd" into library xil_defaultlib +INFO: [VRFC 10-3107] analyzing entity 'tb_firUnit' +Waiting for jobs to finish... +No pending jobs, compilation finished. +execute_script: Time (s): cpu = 00:00:03 ; elapsed = 00:00:12 . Memory (MB): peak = 10376.637 ; gain = 0.000 ; free physical = 6026 ; free virtual = 14704 +INFO: [USF-XSim-69] 'compile' step finished in '12' seconds +INFO: [USF-XSim-3] XSim::Elaborate design +INFO: [USF-XSim-61] Executing 'ELABORATE' step in '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +xelab --incr --debug typical --relax --mt 8 -L xil_defaultlib -L unisims_ver -L unimacro_ver -L secureip -L xpm --snapshot tb_firUnit_behav xil_defaultlib.tb_firUnit xil_defaultlib.glbl -log elaborate.log +Vivado Simulator v2024.1 +Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. +Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. +Running: /usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/bin/unwrapped/lnx64.o/xelab --incr --debug typical --relax --mt 8 -L xil_defaultlib -L unisims_ver -L unimacro_ver -L secureip -L xpm --snapshot tb_firUnit_behav xil_defaultlib.tb_firUnit xil_defaultlib.glbl -log elaborate.log +Using 8 slave threads. +Starting static elaboration +Pass Through NonSizing Optimizer +Completed static elaboration +Starting simulation data flow analysis +Completed simulation data flow analysis +Time Resolution for simulation is 1ps +Compiling package std.standard +Compiling package std.textio +Compiling package ieee.std_logic_1164 +Compiling package ieee.numeric_std +Compiling module xil_defaultlib.glbl +Compiling architecture archi_operativeunit of entity xil_defaultlib.controlUnit [controlunit_default] +Compiling architecture arch_operativeunit of entity xil_defaultlib.operativeUnit [operativeunit_default] +Compiling architecture archi_firunit of entity xil_defaultlib.firUnit [firunit_default] +Compiling architecture archi_tb_firunit of entity xil_defaultlib.tb_firunit +Built simulation snapshot tb_firUnit_behav +execute_script: Time (s): cpu = 00:00:02 ; elapsed = 00:00:09 . Memory (MB): peak = 10376.637 ; gain = 0.000 ; free physical = 5984 ; free virtual = 14728 +INFO: [USF-XSim-69] 'elaborate' step finished in '9' seconds +INFO: [USF-XSim-4] XSim::Simulate design +INFO: [USF-XSim-61] Executing 'SIMULATE' step in '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +INFO: [USF-XSim-98] *** Running xsim + with args "tb_firUnit_behav -key {Behavioral:sim_1:Functional:tb_firUnit} -tclbatch {tb_firUnit.tcl} -log {simulate.log}" +INFO: [USF-XSim-8] Loading simulator feature +Time resolution is 1 ps +source tb_firUnit.tcl +# set curr_wave [current_wave_config] +# if { [string length $curr_wave] == 0 } { +# if { [llength [get_objects]] > 0} { +# add_wave / +# set_property needs_save false [current_wave_config] +# } else { +# send_msg_id Add_Wave-1 WARNING "No top level signals found. Simulator will start without a wave window. If you want to open a wave window go to 'File->New Waveform Configuration' or type 'create_wave_config' in the TCL console." +# } +# } +# run 1000ns +ERROR: Index 16 out of bound 0 to 15 +Time: 275 ns Iteration: 1 Process: /tb_firUnit/firUnit_1/operativeUnit_1/line__119 + File: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd + +HDL Line: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:119 +INFO: [USF-XSim-96] XSim completed. Design snapshot 'tb_firUnit_behav' loaded. +INFO: [USF-XSim-97] XSim simulation ran for 1000ns +launch_simulation: Time (s): cpu = 00:00:09 ; elapsed = 00:00:25 . Memory (MB): peak = 10405.938 ; gain = 29.301 ; free physical = 5906 ; free virtual = 14714 +run 10 us +ERROR: [Simulator 45-1] A fatal run-time error was detected. Simulation cannot continue. +run 10 us +ERROR: [Simulator 45-1] A fatal run-time error was detected. Simulation cannot continue. +run 10 us +ERROR: [Simulator 45-1] A fatal run-time error was detected. Simulation cannot continue. +run 10 us +ERROR: [Simulator 45-1] A fatal run-time error was detected. Simulation cannot continue. +run 10 us +ERROR: [Simulator 45-1] A fatal run-time error was detected. Simulation cannot continue. +run 10 us +ERROR: [Simulator 45-1] A fatal run-time error was detected. Simulation cannot continue. +relaunch_sim +Command: launch_simulation -step compile -simset sim_1 -mode behavioral +INFO: [Vivado 12-12493] Simulation top is 'tb_firUnit' +INFO: [Vivado 12-5698] Checking validity of IPs in the design for the 'XSim' simulator... +INFO: [Vivado 12-5682] Launching behavioral simulation in '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +INFO: [Vivado 12-4795] Using compiled simulation libraries for IPs +INFO: [SIM-utils-51] Simulation object is 'sim_1' +INFO: [SIM-utils-72] Using boost library from '/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/tps/boost_1_72_0' +INFO: [USF-XSim-7] Finding pre-compiled libraries... +INFO: [USF-XSim-11] File '/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/xsim/xsim.ini' copied to run dir:'/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +INFO: [SIM-utils-54] Inspecting design source files for 'tb_firUnit' in fileset 'sim_1'... +INFO: [USF-XSim-97] Finding global include files... +INFO: [USF-XSim-98] Fetching design files from 'sim_1'... +INFO: [USF-XSim-2] XSim::Compile design +INFO: [USF-XSim-61] Executing 'COMPILE and ANALYZE' step in '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +xvlog --incr --relax -prj tb_firUnit_vlog.prj +xvhdl --incr --relax -prj tb_firUnit_vhdl.prj +Waiting for jobs to finish... +No pending jobs, compilation finished. +INFO: [USF-XSim-69] 'compile' step finished in '3' seconds +Command: launch_simulation -step elaborate -simset sim_1 -mode behavioral +INFO: [Vivado 12-12493] Simulation top is 'tb_firUnit' +INFO: [Vivado 12-5698] Checking validity of IPs in the design for the 'XSim' simulator... +INFO: [Vivado 12-5682] Launching behavioral simulation in '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +INFO: [Vivado 12-4795] Using compiled simulation libraries for IPs +INFO: [SIM-utils-51] Simulation object is 'sim_1' +INFO: [USF-XSim-3] XSim::Elaborate design +INFO: [USF-XSim-61] Executing 'ELABORATE' step in '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +xelab --incr --debug typical --relax --mt 8 -L xil_defaultlib -L unisims_ver -L unimacro_ver -L secureip -L xpm --snapshot tb_firUnit_behav xil_defaultlib.tb_firUnit xil_defaultlib.glbl -log elaborate.log +Vivado Simulator v2024.1 +Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. +Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. +Running: /usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/bin/unwrapped/lnx64.o/xelab --incr --debug typical --relax --mt 8 -L xil_defaultlib -L unisims_ver -L unimacro_ver -L secureip -L xpm --snapshot tb_firUnit_behav xil_defaultlib.tb_firUnit xil_defaultlib.glbl -log elaborate.log +Using 8 slave threads. +Starting static elaboration +Pass Through NonSizing Optimizer +Completed static elaboration +INFO: [XSIM 43-4323] No Change in HDL. Linking previously generated obj files to create kernel +INFO: [USF-XSim-69] 'elaborate' step finished in '2' seconds +Time resolution is 1 ps +ERROR: Index 16 out of bound 0 to 15 +Time: 275 ns Iteration: 1 Process: /tb_firUnit/firUnit_1/operativeUnit_1/line__119 + File: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd + +HDL Line: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:119 +relaunch_sim: Time (s): cpu = 00:00:05 ; elapsed = 00:00:07 . Memory (MB): peak = 10405.938 ; gain = 0.000 ; free physical = 5864 ; free virtual = 14635 +close_sim +INFO: [Simtcl 6-16] Simulation closed +launch_simulation +Command: launch_simulation +INFO: [Vivado 12-12493] Simulation top is 'tb_firUnit' +INFO: [Vivado 12-5698] Checking validity of IPs in the design for the 'XSim' simulator... +INFO: [Vivado 12-5682] Launching behavioral simulation in '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +INFO: [Vivado 12-4795] Using compiled simulation libraries for IPs +INFO: [SIM-utils-51] Simulation object is 'sim_1' +INFO: [SIM-utils-72] Using boost library from '/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/tps/boost_1_72_0' +INFO: [USF-XSim-7] Finding pre-compiled libraries... +INFO: [USF-XSim-11] File '/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/xsim/xsim.ini' copied to run dir:'/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +INFO: [SIM-utils-54] Inspecting design source files for 'tb_firUnit' in fileset 'sim_1'... +INFO: [USF-XSim-97] Finding global include files... +INFO: [USF-XSim-98] Fetching design files from 'sim_1'... +INFO: [USF-XSim-2] XSim::Compile design +INFO: [USF-XSim-61] Executing 'COMPILE and ANALYZE' step in '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +xvlog --incr --relax -prj tb_firUnit_vlog.prj +xvhdl --incr --relax -prj tb_firUnit_vhdl.prj +Waiting for jobs to finish... +No pending jobs, compilation finished. +INFO: [USF-XSim-69] 'compile' step finished in '2' seconds +INFO: [USF-XSim-3] XSim::Elaborate design +INFO: [USF-XSim-61] Executing 'ELABORATE' step in '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +xelab --incr --debug typical --relax --mt 8 -L xil_defaultlib -L unisims_ver -L unimacro_ver -L secureip -L xpm --snapshot tb_firUnit_behav xil_defaultlib.tb_firUnit xil_defaultlib.glbl -log elaborate.log +Vivado Simulator v2024.1 +Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. +Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. +Running: /usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/bin/unwrapped/lnx64.o/xelab --incr --debug typical --relax --mt 8 -L xil_defaultlib -L unisims_ver -L unimacro_ver -L secureip -L xpm --snapshot tb_firUnit_behav xil_defaultlib.tb_firUnit xil_defaultlib.glbl -log elaborate.log +Using 8 slave threads. +Starting static elaboration +Pass Through NonSizing Optimizer +Completed static elaboration +INFO: [XSIM 43-4323] No Change in HDL. Linking previously generated obj files to create kernel +INFO: [USF-XSim-69] 'elaborate' step finished in '2' seconds +INFO: [USF-XSim-4] XSim::Simulate design +INFO: [USF-XSim-61] Executing 'SIMULATE' step in '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +INFO: [USF-XSim-98] *** Running xsim + with args "tb_firUnit_behav -key {Behavioral:sim_1:Functional:tb_firUnit} -tclbatch {tb_firUnit.tcl} -log {simulate.log}" +INFO: [USF-XSim-8] Loading simulator feature +Time resolution is 1 ps +source tb_firUnit.tcl +# set curr_wave [current_wave_config] +# if { [string length $curr_wave] == 0 } { +# if { [llength [get_objects]] > 0} { +# add_wave / +# set_property needs_save false [current_wave_config] +# } else { +# send_msg_id Add_Wave-1 WARNING "No top level signals found. Simulator will start without a wave window. If you want to open a wave window go to 'File->New Waveform Configuration' or type 'create_wave_config' in the TCL console." +# } +# } +# run 1000ns +ERROR: Index 16 out of bound 0 to 15 +Time: 275 ns Iteration: 1 Process: /tb_firUnit/firUnit_1/operativeUnit_1/line__119 + File: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd + +HDL Line: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:119 +INFO: [USF-XSim-96] XSim completed. Design snapshot 'tb_firUnit_behav' loaded. +INFO: [USF-XSim-97] XSim simulation ran for 1000ns +launch_simulation: Time (s): cpu = 00:00:06 ; elapsed = 00:00:07 . Memory (MB): peak = 10405.938 ; gain = 0.000 ; free physical = 5844 ; free virtual = 14658 +relaunch_sim +Command: launch_simulation -step compile -simset sim_1 -mode behavioral +INFO: [Vivado 12-12493] Simulation top is 'tb_firUnit' +INFO: [Vivado 12-5698] Checking validity of IPs in the design for the 'XSim' simulator... +INFO: [Vivado 12-5682] Launching behavioral simulation in '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +INFO: [Vivado 12-4795] Using compiled simulation libraries for IPs +INFO: [SIM-utils-51] Simulation object is 'sim_1' +INFO: [USF-XSim-2] XSim::Compile design +INFO: [USF-XSim-61] Executing 'COMPILE and ANALYZE' step in '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +xvlog --incr --relax -prj tb_firUnit_vlog.prj +xvhdl --incr --relax -prj tb_firUnit_vhdl.prj +Waiting for jobs to finish... +No pending jobs, compilation finished. +INFO: [USF-XSim-69] 'compile' step finished in '3' seconds +Command: launch_simulation -step elaborate -simset sim_1 -mode behavioral +INFO: [Vivado 12-12493] Simulation top is 'tb_firUnit' +INFO: [Vivado 12-5698] Checking validity of IPs in the design for the 'XSim' simulator... +INFO: [Vivado 12-5682] Launching behavioral simulation in '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +INFO: [Vivado 12-4795] Using compiled simulation libraries for IPs +INFO: [SIM-utils-51] Simulation object is 'sim_1' +INFO: [USF-XSim-3] XSim::Elaborate design +INFO: [USF-XSim-61] Executing 'ELABORATE' step in '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +xelab --incr --debug typical --relax --mt 8 -L xil_defaultlib -L unisims_ver -L unimacro_ver -L secureip -L xpm --snapshot tb_firUnit_behav xil_defaultlib.tb_firUnit xil_defaultlib.glbl -log elaborate.log +Vivado Simulator v2024.1 +Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. +Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. +Running: /usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/bin/unwrapped/lnx64.o/xelab --incr --debug typical --relax --mt 8 -L xil_defaultlib -L unisims_ver -L unimacro_ver -L secureip -L xpm --snapshot tb_firUnit_behav xil_defaultlib.tb_firUnit xil_defaultlib.glbl -log elaborate.log +Using 8 slave threads. +Starting static elaboration +Pass Through NonSizing Optimizer +Completed static elaboration +INFO: [XSIM 43-4323] No Change in HDL. Linking previously generated obj files to create kernel +INFO: [USF-XSim-69] 'elaborate' step finished in '1' seconds +Time resolution is 1 ps +ERROR: Index 16 out of bound 0 to 15 +Time: 275 ns Iteration: 1 Process: /tb_firUnit/firUnit_1/operativeUnit_1/line__119 + File: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd + +HDL Line: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:119 +relaunch_sim: Time (s): cpu = 00:00:05 ; elapsed = 00:00:08 . Memory (MB): peak = 10435.938 ; gain = 0.000 ; free physical = 5855 ; free virtual = 14627 +current_wave_config {Untitled 2} +Untitled 2 +add_wave {{/tb_firUnit/firUnit_1/controlUnit_1/SR_presentState}} +relaunch_sim +Command: launch_simulation -step compile -simset sim_1 -mode behavioral +INFO: [Vivado 12-12493] Simulation top is 'tb_firUnit' +INFO: [Vivado 12-5698] Checking validity of IPs in the design for the 'XSim' simulator... +INFO: [Vivado 12-5682] Launching behavioral simulation in '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +INFO: [Vivado 12-4795] Using compiled simulation libraries for IPs +INFO: [SIM-utils-51] Simulation object is 'sim_1' +INFO: [USF-XSim-2] XSim::Compile design +INFO: [USF-XSim-61] Executing 'COMPILE and ANALYZE' step in '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +xvlog --incr --relax -prj tb_firUnit_vlog.prj +xvhdl --incr --relax -prj tb_firUnit_vhdl.prj +Waiting for jobs to finish... +No pending jobs, compilation finished. +INFO: [USF-XSim-69] 'compile' step finished in '3' seconds +Command: launch_simulation -step elaborate -simset sim_1 -mode behavioral +INFO: [Vivado 12-12493] Simulation top is 'tb_firUnit' +INFO: [Vivado 12-5698] Checking validity of IPs in the design for the 'XSim' simulator... +INFO: [Vivado 12-5682] Launching behavioral simulation in '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +INFO: [Vivado 12-4795] Using compiled simulation libraries for IPs +INFO: [SIM-utils-51] Simulation object is 'sim_1' +INFO: [USF-XSim-3] XSim::Elaborate design +INFO: [USF-XSim-61] Executing 'ELABORATE' step in '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +xelab --incr --debug typical --relax --mt 8 -L xil_defaultlib -L unisims_ver -L unimacro_ver -L secureip -L xpm --snapshot tb_firUnit_behav xil_defaultlib.tb_firUnit xil_defaultlib.glbl -log elaborate.log +Vivado Simulator v2024.1 +Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. +Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. +Running: /usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/bin/unwrapped/lnx64.o/xelab --incr --debug typical --relax --mt 8 -L xil_defaultlib -L unisims_ver -L unimacro_ver -L secureip -L xpm --snapshot tb_firUnit_behav xil_defaultlib.tb_firUnit xil_defaultlib.glbl -log elaborate.log +Using 8 slave threads. +Starting static elaboration +Pass Through NonSizing Optimizer +Completed static elaboration +INFO: [XSIM 43-4323] No Change in HDL. Linking previously generated obj files to create kernel +INFO: [USF-XSim-69] 'elaborate' step finished in '2' seconds +Time resolution is 1 ps +ERROR: Index 16 out of bound 0 to 15 +Time: 275 ns Iteration: 1 Process: /tb_firUnit/firUnit_1/operativeUnit_1/line__119 + File: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd + +HDL Line: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:119 +relaunch_sim: Time (s): cpu = 00:00:05 ; elapsed = 00:00:07 . Memory (MB): peak = 10435.938 ; gain = 0.000 ; free physical = 5858 ; free virtual = 14634 +run 10 us +ERROR: [Simulator 45-1] A fatal run-time error was detected. Simulation cannot continue. +current_wave_config {Untitled 2} +Untitled 2 +add_wave {{/tb_firUnit/firUnit_1/operativeUnit_1/SR_readAddress}} +relaunch_sim +Command: launch_simulation -step compile -simset sim_1 -mode behavioral +INFO: [Vivado 12-12493] Simulation top is 'tb_firUnit' +INFO: [Vivado 12-5698] Checking validity of IPs in the design for the 'XSim' simulator... +INFO: [Vivado 12-5682] Launching behavioral simulation in '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +INFO: [Vivado 12-4795] Using compiled simulation libraries for IPs +INFO: [SIM-utils-51] Simulation object is 'sim_1' +INFO: [USF-XSim-2] XSim::Compile design +INFO: [USF-XSim-61] Executing 'COMPILE and ANALYZE' step in '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +xvlog --incr --relax -prj tb_firUnit_vlog.prj +xvhdl --incr --relax -prj tb_firUnit_vhdl.prj +Waiting for jobs to finish... +No pending jobs, compilation finished. +INFO: [USF-XSim-69] 'compile' step finished in '3' seconds +Command: launch_simulation -step elaborate -simset sim_1 -mode behavioral +INFO: [Vivado 12-12493] Simulation top is 'tb_firUnit' +INFO: [Vivado 12-5698] Checking validity of IPs in the design for the 'XSim' simulator... +INFO: [Vivado 12-5682] Launching behavioral simulation in '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +INFO: [Vivado 12-4795] Using compiled simulation libraries for IPs +INFO: [SIM-utils-51] Simulation object is 'sim_1' +INFO: [USF-XSim-3] XSim::Elaborate design +INFO: [USF-XSim-61] Executing 'ELABORATE' step in '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +xelab --incr --debug typical --relax --mt 8 -L xil_defaultlib -L unisims_ver -L unimacro_ver -L secureip -L xpm --snapshot tb_firUnit_behav xil_defaultlib.tb_firUnit xil_defaultlib.glbl -log elaborate.log +Vivado Simulator v2024.1 +Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. +Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. +Running: /usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/bin/unwrapped/lnx64.o/xelab --incr --debug typical --relax --mt 8 -L xil_defaultlib -L unisims_ver -L unimacro_ver -L secureip -L xpm --snapshot tb_firUnit_behav xil_defaultlib.tb_firUnit xil_defaultlib.glbl -log elaborate.log +Using 8 slave threads. +Starting static elaboration +Pass Through NonSizing Optimizer +Completed static elaboration +INFO: [XSIM 43-4323] No Change in HDL. Linking previously generated obj files to create kernel +INFO: [USF-XSim-69] 'elaborate' step finished in '2' seconds +Time resolution is 1 ps +ERROR: Index 16 out of bound 0 to 15 +Time: 275 ns Iteration: 1 Process: /tb_firUnit/firUnit_1/operativeUnit_1/line__119 + File: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd + +HDL Line: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:119 +relaunch_sim: Time (s): cpu = 00:00:04 ; elapsed = 00:00:06 . Memory (MB): peak = 10435.938 ; gain = 0.000 ; free physical = 5855 ; free virtual = 14628 +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +close_sim +INFO: [Simtcl 6-16] Simulation closed +launch_simulation +Command: launch_simulation +INFO: [Vivado 12-12493] Simulation top is 'tb_firUnit' +INFO: [Vivado 12-5698] Checking validity of IPs in the design for the 'XSim' simulator... +INFO: [Vivado 12-5682] Launching behavioral simulation in '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +INFO: [Vivado 12-4795] Using compiled simulation libraries for IPs +INFO: [SIM-utils-51] Simulation object is 'sim_1' +INFO: [SIM-utils-72] Using boost library from '/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/tps/boost_1_72_0' +INFO: [USF-XSim-7] Finding pre-compiled libraries... +INFO: [USF-XSim-11] File '/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/xsim/xsim.ini' copied to run dir:'/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +INFO: [SIM-utils-54] Inspecting design source files for 'tb_firUnit' in fileset 'sim_1'... +INFO: [USF-XSim-97] Finding global include files... +INFO: [USF-XSim-98] Fetching design files from 'sim_1'... +INFO: [USF-XSim-2] XSim::Compile design +INFO: [USF-XSim-61] Executing 'COMPILE and ANALYZE' step in '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +xvlog --incr --relax -prj tb_firUnit_vlog.prj +xvhdl --incr --relax -prj tb_firUnit_vhdl.prj +INFO: [VRFC 10-163] Analyzing VHDL file "/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd" into library xil_defaultlib +INFO: [VRFC 10-3107] analyzing entity 'operativeUnit' +INFO: [VRFC 10-163] Analyzing VHDL file "/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd" into library xil_defaultlib +INFO: [VRFC 10-3107] analyzing entity 'firUnit' +INFO: [VRFC 10-163] Analyzing VHDL file "/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/tb_firUnit.vhd" into library xil_defaultlib +INFO: [VRFC 10-3107] analyzing entity 'tb_firUnit' +Waiting for jobs to finish... +No pending jobs, compilation finished. +INFO: [USF-XSim-69] 'compile' step finished in '3' seconds +INFO: [USF-XSim-3] XSim::Elaborate design +INFO: [USF-XSim-61] Executing 'ELABORATE' step in '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +xelab --incr --debug typical --relax --mt 8 -L xil_defaultlib -L unisims_ver -L unimacro_ver -L secureip -L xpm --snapshot tb_firUnit_behav xil_defaultlib.tb_firUnit xil_defaultlib.glbl -log elaborate.log +Vivado Simulator v2024.1 +Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. +Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. +Running: /usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/bin/unwrapped/lnx64.o/xelab --incr --debug typical --relax --mt 8 -L xil_defaultlib -L unisims_ver -L unimacro_ver -L secureip -L xpm --snapshot tb_firUnit_behav xil_defaultlib.tb_firUnit xil_defaultlib.glbl -log elaborate.log +Using 8 slave threads. +Starting static elaboration +Pass Through NonSizing Optimizer +Completed static elaboration +Starting simulation data flow analysis +Completed simulation data flow analysis +Time Resolution for simulation is 1ps +Compiling package std.standard +Compiling package std.textio +Compiling package ieee.std_logic_1164 +Compiling package ieee.numeric_std +Compiling module xil_defaultlib.glbl +Compiling architecture archi_operativeunit of entity xil_defaultlib.controlUnit [controlunit_default] +Compiling architecture arch_operativeunit of entity xil_defaultlib.operativeUnit [operativeunit_default] +Compiling architecture archi_firunit of entity xil_defaultlib.firUnit [firunit_default] +Compiling architecture archi_tb_firunit of entity xil_defaultlib.tb_firunit +Built simulation snapshot tb_firUnit_behav +INFO: [USF-XSim-69] 'elaborate' step finished in '2' seconds +INFO: [USF-XSim-4] XSim::Simulate design +INFO: [USF-XSim-61] Executing 'SIMULATE' step in '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +INFO: [USF-XSim-98] *** Running xsim + with args "tb_firUnit_behav -key {Behavioral:sim_1:Functional:tb_firUnit} -tclbatch {tb_firUnit.tcl} -log {simulate.log}" +INFO: [USF-XSim-8] Loading simulator feature +Time resolution is 1 ps +source tb_firUnit.tcl +# set curr_wave [current_wave_config] +# if { [string length $curr_wave] == 0 } { +# if { [llength [get_objects]] > 0} { +# add_wave / +# set_property needs_save false [current_wave_config] +# } else { +# send_msg_id Add_Wave-1 WARNING "No top level signals found. Simulator will start without a wave window. If you want to open a wave window go to 'File->New Waveform Configuration' or type 'create_wave_config' in the TCL console." +# } +# } +# run 1000ns +ERROR: Index 16 out of bound 0 to 15 +Time: 275 ns Iteration: 1 Process: /tb_firUnit/firUnit_1/operativeUnit_1/line__119 + File: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd + +HDL Line: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:119 +INFO: [USF-XSim-96] XSim completed. Design snapshot 'tb_firUnit_behav' loaded. +INFO: [USF-XSim-97] XSim simulation ran for 1000ns +launch_simulation: Time (s): cpu = 00:00:07 ; elapsed = 00:00:08 . Memory (MB): peak = 10475.977 ; gain = 0.000 ; free physical = 5280 ; free virtual = 14605 +current_wave_config {Untitled 3} +Untitled 3 +add_wave {{/tb_firUnit/firUnit_1/operativeUnit_1/O_processingDone}} {{/tb_firUnit/firUnit_1/operativeUnit_1/O_Y}} {{/tb_firUnit/firUnit_1/operativeUnit_1/SR_coefRegister}} {{/tb_firUnit/firUnit_1/operativeUnit_1/SR_shiftRegister}} {{/tb_firUnit/firUnit_1/operativeUnit_1/SC_multOperand1}} {{/tb_firUnit/firUnit_1/operativeUnit_1/SC_multOperand2}} {{/tb_firUnit/firUnit_1/operativeUnit_1/SC_MultResult}} {{/tb_firUnit/firUnit_1/operativeUnit_1/SC_addResult}} {{/tb_firUnit/firUnit_1/operativeUnit_1/SR_sum}} {{/tb_firUnit/firUnit_1/operativeUnit_1/SR_Y}} +relaunch_sim +Command: launch_simulation -step compile -simset sim_1 -mode behavioral +INFO: [Vivado 12-12493] Simulation top is 'tb_firUnit' +INFO: [Vivado 12-5698] Checking validity of IPs in the design for the 'XSim' simulator... +INFO: [Vivado 12-5682] Launching behavioral simulation in '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +INFO: [Vivado 12-4795] Using compiled simulation libraries for IPs +INFO: [SIM-utils-51] Simulation object is 'sim_1' +INFO: [USF-XSim-2] XSim::Compile design +INFO: [USF-XSim-61] Executing 'COMPILE and ANALYZE' step in '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +xvlog --incr --relax -prj tb_firUnit_vlog.prj +xvhdl --incr --relax -prj tb_firUnit_vhdl.prj +Waiting for jobs to finish... +No pending jobs, compilation finished. +INFO: [USF-XSim-69] 'compile' step finished in '3' seconds +Command: launch_simulation -step elaborate -simset sim_1 -mode behavioral +INFO: [Vivado 12-12493] Simulation top is 'tb_firUnit' +INFO: [Vivado 12-5698] Checking validity of IPs in the design for the 'XSim' simulator... +INFO: [Vivado 12-5682] Launching behavioral simulation in '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +INFO: [Vivado 12-4795] Using compiled simulation libraries for IPs +INFO: [SIM-utils-51] Simulation object is 'sim_1' +INFO: [USF-XSim-3] XSim::Elaborate design +INFO: [USF-XSim-61] Executing 'ELABORATE' step in '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +xelab --incr --debug typical --relax --mt 8 -L xil_defaultlib -L unisims_ver -L unimacro_ver -L secureip -L xpm --snapshot tb_firUnit_behav xil_defaultlib.tb_firUnit xil_defaultlib.glbl -log elaborate.log +Vivado Simulator v2024.1 +Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. +Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. +Running: /usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/bin/unwrapped/lnx64.o/xelab --incr --debug typical --relax --mt 8 -L xil_defaultlib -L unisims_ver -L unimacro_ver -L secureip -L xpm --snapshot tb_firUnit_behav xil_defaultlib.tb_firUnit xil_defaultlib.glbl -log elaborate.log +Using 8 slave threads. +Starting static elaboration +Pass Through NonSizing Optimizer +Completed static elaboration +INFO: [XSIM 43-4323] No Change in HDL. Linking previously generated obj files to create kernel +INFO: [USF-XSim-69] 'elaborate' step finished in '3' seconds +Time resolution is 1 ps +ERROR: Index 16 out of bound 0 to 15 +Time: 275 ns Iteration: 1 Process: /tb_firUnit/firUnit_1/operativeUnit_1/line__119 + File: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd + +HDL Line: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:119 +relaunch_sim: Time (s): cpu = 00:00:05 ; elapsed = 00:00:07 . Memory (MB): peak = 10475.977 ; gain = 0.000 ; free physical = 5358 ; free virtual = 14631 +current_wave_config {Untitled 3} +Untitled 3 +add_wave {{/tb_firUnit/firUnit_1/operativeUnit_1/I_loadY}} +relaunch_sim +Command: launch_simulation -step compile -simset sim_1 -mode behavioral +INFO: [Vivado 12-12493] Simulation top is 'tb_firUnit' +INFO: [Vivado 12-5698] Checking validity of IPs in the design for the 'XSim' simulator... +INFO: [Vivado 12-5682] Launching behavioral simulation in '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +INFO: [Vivado 12-4795] Using compiled simulation libraries for IPs +INFO: [SIM-utils-51] Simulation object is 'sim_1' +INFO: [USF-XSim-2] XSim::Compile design +INFO: [USF-XSim-61] Executing 'COMPILE and ANALYZE' step in '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +xvlog --incr --relax -prj tb_firUnit_vlog.prj +xvhdl --incr --relax -prj tb_firUnit_vhdl.prj +Waiting for jobs to finish... +No pending jobs, compilation finished. +INFO: [USF-XSim-69] 'compile' step finished in '3' seconds +Command: launch_simulation -step elaborate -simset sim_1 -mode behavioral +INFO: [Vivado 12-12493] Simulation top is 'tb_firUnit' +INFO: [Vivado 12-5698] Checking validity of IPs in the design for the 'XSim' simulator... +INFO: [Vivado 12-5682] Launching behavioral simulation in '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +INFO: [Vivado 12-4795] Using compiled simulation libraries for IPs +INFO: [SIM-utils-51] Simulation object is 'sim_1' +INFO: [USF-XSim-3] XSim::Elaborate design +INFO: [USF-XSim-61] Executing 'ELABORATE' step in '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +xelab --incr --debug typical --relax --mt 8 -L xil_defaultlib -L unisims_ver -L unimacro_ver -L secureip -L xpm --snapshot tb_firUnit_behav xil_defaultlib.tb_firUnit xil_defaultlib.glbl -log elaborate.log +Vivado Simulator v2024.1 +Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. +Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. +Running: /usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/bin/unwrapped/lnx64.o/xelab --incr --debug typical --relax --mt 8 -L xil_defaultlib -L unisims_ver -L unimacro_ver -L secureip -L xpm --snapshot tb_firUnit_behav xil_defaultlib.tb_firUnit xil_defaultlib.glbl -log elaborate.log +Using 8 slave threads. +Starting static elaboration +Pass Through NonSizing Optimizer +Completed static elaboration +INFO: [XSIM 43-4323] No Change in HDL. Linking previously generated obj files to create kernel +INFO: [USF-XSim-69] 'elaborate' step finished in '1' seconds +Time resolution is 1 ps +ERROR: Index 16 out of bound 0 to 15 +Time: 275 ns Iteration: 1 Process: /tb_firUnit/firUnit_1/operativeUnit_1/line__119 + File: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd + +HDL Line: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:119 +relaunch_sim: Time (s): cpu = 00:00:05 ; elapsed = 00:00:06 . Memory (MB): peak = 10475.977 ; gain = 0.000 ; free physical = 5219 ; free virtual = 14494 +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +relaunch_sim +Command: launch_simulation -step compile -simset sim_1 -mode behavioral +INFO: [Vivado 12-12493] Simulation top is 'tb_firUnit' +INFO: [Vivado 12-5698] Checking validity of IPs in the design for the 'XSim' simulator... +INFO: [Vivado 12-5682] Launching behavioral simulation in '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +INFO: [Vivado 12-4795] Using compiled simulation libraries for IPs +INFO: [SIM-utils-51] Simulation object is 'sim_1' +INFO: [USF-XSim-2] XSim::Compile design +INFO: [USF-XSim-61] Executing 'COMPILE and ANALYZE' step in '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +xvlog --incr --relax -prj tb_firUnit_vlog.prj +xvhdl --incr --relax -prj tb_firUnit_vhdl.prj +INFO: [VRFC 10-163] Analyzing VHDL file "/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd" into library xil_defaultlib +INFO: [VRFC 10-3107] analyzing entity 'operativeUnit' +INFO: [VRFC 10-163] Analyzing VHDL file "/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd" into library xil_defaultlib +INFO: [VRFC 10-3107] analyzing entity 'firUnit' +INFO: [VRFC 10-163] Analyzing VHDL file "/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/tb_firUnit.vhd" into library xil_defaultlib +INFO: [VRFC 10-3107] analyzing entity 'tb_firUnit' +Waiting for jobs to finish... +No pending jobs, compilation finished. +INFO: [USF-XSim-69] 'compile' step finished in '3' seconds +Command: launch_simulation -step elaborate -simset sim_1 -mode behavioral +INFO: [Vivado 12-12493] Simulation top is 'tb_firUnit' +INFO: [Vivado 12-5698] Checking validity of IPs in the design for the 'XSim' simulator... +INFO: [Vivado 12-5682] Launching behavioral simulation in '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +INFO: [Vivado 12-4795] Using compiled simulation libraries for IPs +INFO: [SIM-utils-51] Simulation object is 'sim_1' +INFO: [USF-XSim-3] XSim::Elaborate design +INFO: [USF-XSim-61] Executing 'ELABORATE' step in '/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/AudioProc.sim/sim_1/behav/xsim' +xelab --incr --debug typical --relax --mt 8 -L xil_defaultlib -L unisims_ver -L unimacro_ver -L secureip -L xpm --snapshot tb_firUnit_behav xil_defaultlib.tb_firUnit xil_defaultlib.glbl -log elaborate.log +Vivado Simulator v2024.1 +Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. +Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. +Running: /usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/bin/unwrapped/lnx64.o/xelab --incr --debug typical --relax --mt 8 -L xil_defaultlib -L unisims_ver -L unimacro_ver -L secureip -L xpm --snapshot tb_firUnit_behav xil_defaultlib.tb_firUnit xil_defaultlib.glbl -log elaborate.log +Using 8 slave threads. +Starting static elaboration +Pass Through NonSizing Optimizer +Completed static elaboration +Starting simulation data flow analysis +Completed simulation data flow analysis +Time Resolution for simulation is 1ps +Compiling package std.standard +Compiling package std.textio +Compiling package ieee.std_logic_1164 +Compiling package ieee.numeric_std +Compiling module xil_defaultlib.glbl +Compiling architecture archi_operativeunit of entity xil_defaultlib.controlUnit [controlunit_default] +Compiling architecture arch_operativeunit of entity xil_defaultlib.operativeUnit [operativeunit_default] +Compiling architecture archi_firunit of entity xil_defaultlib.firUnit [firunit_default] +Compiling architecture archi_tb_firunit of entity xil_defaultlib.tb_firunit +Built simulation snapshot tb_firUnit_behav +INFO: [USF-XSim-69] 'elaborate' step finished in '2' seconds +Time resolution is 1 ps +relaunch_sim: Time (s): cpu = 00:00:04 ; elapsed = 00:00:06 . Memory (MB): peak = 10493.980 ; gain = 0.000 ; free physical = 5240 ; free virtual = 14560 +current_wave_config {Untitled 3} +Untitled 3 +add_wave {{/tb_firUnit/firUnit_1/operativeUnit_1/SR_readAddress}} +restart +INFO: [Wavedata 42-604] Simulation restarted +run 10 us +save_wave_config {/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/tb_firUnit_behav.wcfg} +add_files -fileset sim_1 -norecurse /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/tb_firUnit_behav.wcfg +set_property xsim.view /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/proj/tb_firUnit_behav.wcfg [get_filesets sim_1] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/controlUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/firUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +WARNING: [filemgmt 56-199] Attempt to get parsing info during refresh. "On-the-fly" syntax checking information may be incorrect. [/homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/hdl/operativeUnit.vhd:] +close_sim +INFO: [Simtcl 6-16] Simulation closed +exit +INFO: [Common 17-206] Exiting Vivado at Wed Feb 26 12:29:33 2025... diff --git a/src/hdl/controlUnit.vhd b/src/hdl/controlUnit.vhd index 705905d..c5cc141 100644 --- a/src/hdl/controlUnit.vhd +++ b/src/hdl/controlUnit.vhd @@ -49,34 +49,62 @@ architecture archi_operativeUnit of controlUnit is begin - process (_BLANK_) is - begin - if I_reset = '1' then -- asynchronous reset (active high) - SR_presentState <= _BLANK_ - elsif rising_edge(I_clock) then -- rising clock edge - _BLANK_ - end if; - end process; - - process (_BLANK_) is - begin - case SR_presentState is - - when WAIT_SAMPLE => - _BLANK_ - - when others => null; - end case; - end process; - - O_loadShift <= '1' when _BLANK_ ; - O_initAddress <= '1' when _BLANK_ ; - O_incrAddress <= '1' when _BLANK_ ; - O_initSum <= '1' when _BLANK_ ; - O_loadSum <= '1' when _BLANK_ ; - O_loadY <= '1' when _BLANK_ ; - O_FilteredSampleValid <= '1' when _BLANK_ ; + process (I_clock, I_reset) is + begin + if I_reset = '1' then -- asynchronous reset (active high) + SR_presentState <= WAIT_SAMPLE; + elsif rising_edge(I_clock) then -- rising clock edge + SR_presentState <= SR_futurState; + end if; + end process; + + + -- Next state logic process + process (SR_presentState, I_inputSampleValid, I_processingDone) is + begin + case SR_presentState is + + when WAIT_SAMPLE => + if I_inputSampleValid = '1' then + SR_futurState <= STORE; + else + SR_futurState <= WAIT_SAMPLE; + end if; + + when STORE => + SR_futurState <= PROCESSING_LOOP; + + when PROCESSING_LOOP => + if I_processingDone = '1' then + SR_futurState <= OUTPUT; + else + SR_futurState <= PROCESSING_LOOP; + end if; + + when OUTPUT => + SR_futurState <= WAIT_END_SAMPLE; + + when WAIT_END_SAMPLE => + if I_inputSampleValid = '0' then + SR_futurState <= WAIT_SAMPLE; + else + SR_futurState <= WAIT_END_SAMPLE; + end if; + + when others => + SR_futurState <= WAIT_SAMPLE; + end case; + end process; + + -- Output logic + O_loadShift <= '1' when SR_presentState = STORE else '0'; + O_initAddress <= '1' when SR_presentState = STORE else '0'; + O_incrAddress <= '1' when SR_presentState = PROCESSING_LOOP else '0'; + O_initSum <= '1' when SR_presentState = STORE else '0'; + O_loadSum <= '1' when SR_presentState = PROCESSING_LOOP else '0'; + O_loadY <= '1' when SR_presentState = OUTPUT else '0'; + --O_FilteredSampleValid <= _BLANK_; diff --git a/src/hdl/operativeUnit.vhd b/src/hdl/operativeUnit.vhd index 1286aff..fe1c926 100644 --- a/src/hdl/operativeUnit.vhd +++ b/src/hdl/operativeUnit.vhd @@ -85,42 +85,62 @@ begin to_signed(2, 8) ); - shift : process (_BLANK_) is + shift : process (I_reset, I_clock) is begin -- process shift if I_reset = '1' then -- asynchronous reset (active high) SR_shiftRegister <= (others => (others => '0')); - elsif _BLANK_ - + elsif Rising_edge(I_clock) then + if I_loadShift = '1' then + for i in 1 to 15 loop + SR_shiftRegister(i) <= SR_shiftRegister(i-1); + end loop; + SR_shiftRegister(0) <= signed(I_inputSample); + end if; end if; - end process shift; + end process shift ; + + - incr_address : process (_BLANK_) is + incr_address : process (I_reset, I_clock) is begin if I_reset = '1' then -- asynchronous reset (active high) SR_readAddress <= 0; - elsif _BLANK_ - + elsif Rising_edge(I_clock) then + if I_initAddress = '1' then + SR_readAddress <= 0; + elsif I_incrAddress = '1' and SR_readAddress <= 15 then + SR_readAddress <= SR_readAddress + 1; + end if; end if; end process incr_address; - O_processingDone <= '1' when _BLANK_ ; + O_processingDone <= '1' when SR_readAddress = 14 else '0'; - SC_multOperand1 <= _BLANK_ ; -- 8 bits - SC_multOperand2 <= _BLANK_ ; -- 8 bits - SC_MultResult <= _BLANK_ ; -- 16 bits + SC_multOperand1 <= SR_shiftRegister(SR_readAddress); -- 8 bits + SC_multOperand2 <= SR_coefRegister(SR_readAddress); -- 8 bits + SC_MultResult <= SC_multOperand1 * SC_multOperand2; -- 16 bits SC_addResult <= resize(SC_MultResult, SC_addResult'length) + SR_sum; - sum_acc : process (_BLANK_) is + sum_acc : process (I_reset, I_clock) is begin if I_reset = '1' then -- asynchronous reset (active high) SR_sum <= (others => '0'); - elsif _BLANK_ + elsif Rising_edge(I_clock) then + if I_initSum = '1' then + SR_sum <= (others => '0'); + elsif I_loadSum = '1' then + SR_sum <= SC_addResult; + end if; end if; end process sum_acc; - store_result : process (_BLANK_) is + store_result : process (I_clock) is begin - _BLANK_ + if Rising_edge(I_clock) then + if I_loadY = '1' then + SR_Y <= signed(resize(SC_addResult, SR_Y'length)); + end if; + end if; end process store_result; diff --git a/src/ip/clk_wiz_0/clk_wiz_0.dcp b/src/ip/clk_wiz_0/clk_wiz_0.dcp index 1df5ec10a4ff9e7c1b2e8c55ee8f41698941ff5f..f726fa3af1501226fc8fa1c14219391554de4aa4 100644 GIT binary patch literal 13383 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 literal 12528 zcmWIWW@Zs#U|`^2SlempaUvnAs*sa`;kO+F11|#uLvl`be0gS7yn$Y7O4`-v-2BB> zV*mDC`p2#<Ulz2|n)k`lw;7v*xKy6{F$rEMt8xz)^PDp+lSxqV?U%T_|MzWcWZ(^u zz7@GONSOUx@wwu@-r7G-!n$)*XRMcdF!{53&fm}S3??U+x<AR6J<qC?(Rl6RzfTgj zi$ZH2GTPc#{!7Zu|MoPrM4sDZd!y`|Z4sM(KCyOeh~eUzV`{`)y_Ye``$gk41{X$- z<qjFl8^vGU{c&$@{(8s9w<@=Y$1$5EoALI%tjja+sME3del7b6+k(Q4#bJyGnC7ef zIP4PfQ}WvXrB{Dn%53h;5lp`8-y3t|jbzO)%fm-mMHQZzpWvT&FhEvYx8d&x+3$QN z&*J^^Z2mt?dBXC2x1{dl*Xqgr9rJVk{_NardDGoUv$ifrrg7Q#Cra`r`+B$LPpP}s z6L6oW$Lr@ahJXBf<*kkHf17{s@1aKN`;pd-pF2EE8|PT5iMBoazHa-cck>)C-(8!2 zV*15Pg@!!sR%<w9g0@68PE>1O`k=D;fX77<=c!7jJNRV3u*8V0nUgE<Z&A{$q~6fW zT}L-8c+7Sp{#G%|x9bJ7Km1|naVUQHBg4=4b@;U}r@A;M?B5|$x4bjf`_gZr*<mVW zg{Crl^^NyViBws#tTm)}>fWxG^)cTjcbWvcSWH-d|2li-pVErPott+EosKi$o;}TO zu9nf_J*z&Rd>pOI7Z`Ty$Fu{Arxu1i5qKJK`x%Hx6o0#^`&)#|>}~IF?{NP<F?+q> zgwhKWzP@+*?){qIriNp$vY6^7#rvC1^p?KVj-EYx)~0ouI+M11T^$wm<>}`69;>33 z?VZY*78Nja!O9*<m-u6q3a8olOn?5m$K6~ztFyFGPV#n&U~q)er%6+~Bv-mljbGrr z?_@}D<CQBZk8Mq7cKG{-PEK)665MO}L|SZa+sv1<;=PV8{b2p4r_KItu6tig#E~^6 z3Ei!y+E2)Q`;t7L_0f{Qic?lj|1G;@q36r33Qrj#4wV{Q5ZdzinazupGX!s1yjR<4 zD6@JNlP8;8*1p4@n=7tai?)`m2tImb%69HgY#Ymsr<rfrJA30E#`kx7p7J*5=bv$p z7Wvb4Y~!bA{23qj*{Q19%s%=lPvGo>L)m@Z>i6~P++IxSvGKKwQrjz7DR+{!s$BFN z%aiZ5X<ij2Q{Lu%^LkmbDnN7Z>GdMpTUF=0ou)eL@Xer^ubMdGU)*0%Y8^Vs^V^jG z^;Jvbv@ZrZ@vT@9<>!C?h~KiPOTG%P1>f~8Xr8-E`=izz*S}ipmmDlnSb5E1a*)NG z;>Z9g2~~?jLZ?nu6mYL+f4o{`M<~-J-yBaliK0`}jAUYZ*9u(-IA?CMW7C(Uh``dV z*6B|D8+Un3|EGBCL8P~hu;0wNLiTOJNzpdx<*WW0&dHkp{oIY&@z0YjuD;z`70b5# z+UuWEx4PXu)=k+lHLiQ*Bbj$8c_BA<`Ruv8T&(PUxvSo{bwM64wg~q>FKDthwD8%m z_q^_};|z1-_|BBDpX%FV<Qe+l*Nj;UEI;oN-4uHv=GJOmtv)}C|E<AuDqpYci%8hi zt$u{vLrr1X?WRptYfo{N&v1G(wUm2lbf?LlBSq5%V^xodM3^3t&~f><jBWmPLDM}V ztEx1wd<?Sru*v&-^(jTuJ0h!hX<jSbT>D^|!aly057Tz9n*G))udLu+x)<{!b^Q+t zcI%b1T9yZ!+RU|j__C<_=Gv#J+gDA$YZdox$KE$rKWz%XdOFTk|Le(+i)R{_zKTlv z^4+^OW|G{42?>j3CI<RyxN;v3xVldCuu}HDjiwJTuQ_7dqw2ljYQe)<8LB$5Dr=ie ze7dF6G@O6T&Wh}sc<bG<Q2i<4wM@d53ClQ7&MM-O;5(M)8P~p4-D>6Yh`1n=9KpC% zi%(w<_|1}e-;HB)(gah3HLErENUjj8mexCUbocV*cgs$$IjPzmchTwp{s(sscUEvW z9s6$oPk7pYZ$IuoA7sRJFHL(HBzE#(=47$SbLPdIUh*~aSanQs?}@6yEsq_yiM+~u zaqZfLm1`HqMmI-9HwQ#JuWo89_}wY(D(4V)Vcr_9mZ+)gu4Nl%?PXhhEn7Eh@3KYL zvemPex=q>^XI$oV_5o+<;&9^{r?WriUT>a%wRy7aOQ{c9b8YYXJ!9?NG-0BeIEUNq z3wwSYj?JtK+2eV(x98g$$-<ZNFN^NY&|h+_rZMx(^5@bLGgahL6t7P@;#j%AG1|%Z ztdz(5jUoYETZ%4wm~HarycogxXX2$u*~+QeI|O5$K3)jfb20FM?zL0rn{6|!Y@?1z zZ$13#e0gi@ng}mL^NbSZr43PQrp{*%zo2EZ_0EE)I}SN*iv`OpUIv#r6JOLk?J*bk zO+U?}cNSdiUBHyJF|1B5#xZ+;;Dw@?%HB6cZG|ky{48vEPI&(?`1VD>NpzcxPic|V zjOniub1GLJV-NOvaa7&3@?`6(n=4(~3%zDsNUq#tvLcF2Y{wKarjth9c`KAX!scu_ zsIpaR%lbPzW_4e0=@QF|lX=d$|L}Qn_ZKtx&-~rbe`;>|xy`ecRwgB#s-E3kbmrK- zM+;;&Z`^L7aXe?uXYZc97aezA=iPhLai>tQ=gL0|WHeRSMfl{tKUs0;;My$#uih|O zMx5S1>-M{@r0vrim!3XzdC6X%UF^CqEtG$rIlK6f-y}IU>DT5d{}r}2$^O_a&V6I& zox}egh<;iqz+TN%;c379j2){-%a4i={*0$KzjEp5XRi;7owq{Gsm8`aD6~yPRV?wz zhi@}IRSstCuk%uR*~XNq<X~>Fa24;@IcJ_&=-HMn?5O`|`u&>p`J=XSD%_5LT?)3l z78K_{_OE_=XXlgH8+MgtFMGE>cH;l1p#SDq?JjlExNY@L&p&*6bh9@k_x;?|3A-Ne zIP&1zNzP~A?>%PZ`2J(w?vi(lPM_GCu6^eD^2_<M`hrns-dMU-Ti5sfa{l>9TV=U@ z|9AE+zn&bqv2l0w<ZrIO?$@>d@She?a6u;jqWbaKhrE-X36<WfcCw49@XzZKUAsbs zFLAeLo%=tQduh%3?Hg<ZCpCTb4VCVln%w#1LV=Odi-()`nOVf$es?a;QHb?^<N|>| z<*htM*5_L9e-W-%$v2hG=#*BKyrRP&@twm%W%rfo4=(N8?Orisv3})*@VT5@b~;4g z;h0pYd!^3e-qW7Ei7)2;NLh0@`>27Z_SJQ2;$0KBT>fx2_r}fLe-GVXx$r+*s%h&4 zulSZ@FXSzEnVI?NeAB8s=byXrD%ZBnyU#^Fzwg9ivFN?ie}2@q8PC!E3j-M#7-|?8 z82C`yW|?`(McgOPoIT^+U+$^n*;9U6zw7%MZ#}QGzGt;P&lH|Msju&?Yjnlf$S6p| zPxqA1nUib0bWWZ*zj>3Fj@P*pI^LlMCLsm^224o`hu9p0EEM#`8Bi@}U|?Wi0uc=8 z4a0)sB4#wjovs`Ie_&-`5aniI;74(3aYkZ6YHpZ!j&!KV+>OG|Z^_+0U;e4ki~Cuy z#s&X3%Q8<bFR?N1^Ud|QGWMIyBs=L^u8;F9wU_<*iC1&YJvw}^@-B*2X$gr^ydtZx z@#UsyF^;LCr`R~(?J<AMFL1K*`<&mE-}jZ@uP#<p^{l^h`0(eqQ@_2MTC=#+^1Y7! zx~-p%J$m-&(j&L*@;LkbWu<#-%PNiI=V<sm+d6fsO}q5Zuh-nN{|3GOa!)qUb5hwQ z|67l}TZ=j4r!8?dXLgkK<XWh7JmK}lyKA46{jmNs*)Ta{-80Fu(sMZ#s>N!oLdSB~ zzMC5rm$TkzLSSamjva+rA4{}Z1$(5=tqDk1=sLM7^wX+oiPyHYn(!nvCG!~@NUV^( zZ04iRZ0Hl^q&9sLm-CF535Kf}W^g{y6Muh;buky`CgIC%WgMP9-79xbaSF)@+nlzl zN-Ssw*IJ9kPP?SFJNhRaEU{n8^x8B0g}|m1v1MWb9wPiQQK^ncLmW8Mq<J2%SZBE_ zZHC*17}={H{aQYA`L%k27HyWQoH8r*@XSK(&s;r<1$oC*Cpa&-xVa<2pwDZ;N}23m zN6bQ)W=5wxG>qy}sP2l`8ni+7@xN(>Q(9%0@CQBMX+Ex*CjXH|Yp+=5iR4AWb(+ln zzib6U5~p7JAhNRh!DYwe1^g}Pf8J_Us%wRveGq1Oqw}y+wC?n35iOhBZ$)P9%6py0 zHcwbqJfS6aZXbt+=sf;w1;=a?#dPmp&C=S_FjMbI_T(n<zf(W(rq69Yyg@qB+<$S# zRI#+<3H+;S=c@b&ywQClJw{L1mhX4Lll#wNjM;=&lxcr<s$=1r@%DM;52e=k+z&2Z zQh2jGN;*XCJ>T7}*^3Q2GbXH?f9?R|KCe>$7e)q0Hwq`Pv1d+p-g~t~(x=!-LO`(H z*}}tRvkja6!dKku!mrC*-_k6x_=C}+2XkkcrL&cY#VzdPnpJ)%|BTL_Td7=4mOYwM zw)f}WPJOtwZrOrEg7wF>=EYr<;@$l0qTR{`rRUQpXgIAbmasnhVvof7kkYwPq2`hj zD_RcZpGq{CSlV$wmp3)*PF8ZC`opxuW%~uJo=pAc)Uoncrv4YPPgVBLtukM^BVXvI z$YfbuI$gR(@=D-JiMx-dwy~+rVO^eQdPFGVulcT<29FH7o3}2D);s=CV!Bi*o0(S3 zCz<Q(UgfdL_`I5x``L4Kuf+}vi~O6voMdKMMC6~FzWlL)`jX~C3%w=I&IbK~$JePQ zGPZw-y8NDjO}(Pv|4ognI%j2@%niKy+nDl|1fplm(zoE+bCt1;N!>X>rB}SklPSMF zVb%d9_TSw$2ZGoG8iEx+Fwfy@lwTm)l&Q{`Zg9*owsA9~|3=Y>X9-!8*z?L6SnJeT zT#M|F-(9Zu+B4#yqN3mO2eJRs#JVm&nb&kxZ&CIW8~3Bkbr&@wUMpRSeelA;@ycdD z<H$q)jl6t264}fQHD_&H_j23P1FpM1=`x1waEU!HeZ+WHN#(>D4W}i9V<)z1-(9!n z$MI~Lb(c&<woLGyn_HFFdTiz?i9PP=mU{xTr`27lpS|W1$DaO3LudZo%ytI~jn-Y7 z^ZzU34*~X^Lp*kiF1v<SIaVKem@K1n@$<EShqHPz&qijv*k-A0r}^kZXAkq{s;eOn zf+gE$^)BXpU7<W_va*A`fq7o-_NgkF`Ze{>Ps^u#TYTo!8{?TP->9tK;8_-*cK=jP z(_bCq*+*}L8(AM-Ge@NPwfVcBeSr*}o|c;WtxhZsVrLSX_AN;HcYk_n<OxP$#?DC{ z2b*t~SF#!I_;&lSyGhMIQ&+zOXV>oL|Lai1RQL1I`unMB&y@_hWKX&(?@lR__5SmJ zmHP~vGZm(FLc5iOKW!;d37Xi^e{k*ZJ@+zvj=Vp2dTY%hyFLf|Z<<>Fug`b6CMfZN zn=w+5v6$Ip=^W9C1uw3gvRuD6>cr_Ot~~GJ)t5`$srzttzNXyMb7Iq1Ov$M(O)i$7 zIeF{#xLp;`bfix_oyubI_UyFk(zQnyF>`jhb_nWEjZC>%aj4$-+xzq)wTUsA`Y+c` z70uIjPCD>DQ0+f6YE5#E$92wh1_lNVR`i;rJSFYuBu6f1MIM*$t@m7eXC|!s9QtCJ zeAJ7d)>}^JMQw~<B=GozbfVnbvi)zu`=1LZbR7%I`Iptr$+fEN^fZBs6>L_&yE0~$ z%levg&(R2t-(RTG#aR-_-}pLVPvETBM?w{q|La8eZEA^D&0MZ?TT7cwYNBPqxg($a zf9zD0F*Go2Q~t5iQO5AYb`8E6KRJ?b?^bSCSfpyli0T71i8e7sZUzP!ZUzP(l<KV_ zk5PvE@t264iZEkyS0@Dp1qGuNvt$shkYr#|acghX*<k6DqUjC?3>2DE3p%bBaejVy zSI6v<$042U9PYCmX}V`M7Blu-zu=M7u<@dM%Yl1$y{5)aeI1s&RO`F#vnka@9&Z&b zpG<K6*ZgGO|HRAdtE-l&%B-3+b&2!$_4oHw?yr--e0kQ)=aGMZuF6aOeDL4Cefuu( zT1rLtxg-l(ignud9C;*I`SaR^ZN-5$YwpS(VxP?a=+oPnwNjclzIN;pnz(rN#iv(Y zY$gS-;gE@!t%|lP_v6?9r|VUF>BY%~&3<!*HqB1W+*9*QYH#5_x4<ROK3!X960>#o z@^g{FyZExMMs2-UpyhXY=Z5o3vK1a3Yy7(QOk2s`sBRg{<z-LS<V~NeeB5pdi?fhP zW`c9LN}@AYMuh*QqMapvQv<zjPCHWaEi&!yjZI4g+paA&Wa6GS@%(Bo$xJJ0-p7Jr zU6YI%*BA%(bSBO7NK?8gd~~M9yG|h<70HNcZ6c3PM-=sc<J{iAd+(cXhTHq!c{cC( z-&3Z&rP^b6>MhmG=?h}#lo`EE+HyFIscYpMFXu?*zdXCGrs!+5t()YTdd)OeN@-%p zPTNvGcek@%izWq$2%m_V@+IJqb0Pmpxvt8N3(3uw8WtsKxfcJu9`oPydi~k2@et;# z{ceA+ulO(ZHGc8G>?`%Xzt#u-H+{9AO;{qJEF{w)z9Ez46RQosVf=+JTNW)VG%52* zb)U|5rb+dyHk%#$vtGq@>))0{34NM$WcriYQIEHpJPO@vvP4=^xBD=s((<m;tPXGY zyi~sFT*$AwWZ~tgpQh`c9&D>kGhf;ed{q3X`@g3}oSxV9yARwE)S4^rnJkf5_2j|9 zjV4|02JA&AWKaB2IL9xPBCsaplxT>}9)}dIM~jPizh6Agb5!oKBt!T6`i`By8E5`s zjQqpAiA8-kr`*&H0?)22^L{#SO}xxb;Un4+_eD$+GoCHn$?v<V|KB^7a>vK484kw( zRWr^su$dg1p~8B4K_S2SVKKSAErBfN67L!3E&RdoLFVZ1hW9}+EPEUbnQXiZIX~2J zyYIJO=saV>TVIYG)rFFlM^6c5)cBm8Qxsfr)F){V?+@Xw{v9v(JX=<LX6K`V%l3(v z=lpOya5(;;!NJNmLE#MUmi@82*dC}H4LxAk^}6A)$o>?=)WDytM@<j#@93!W`Y8Dz zwQF|6bPYRpo#Ki6&byXxR83%xIncJVfwzc}yMR&p36t3g)|?LR8w%nZ94FakEN{@~ zsrl?sBLBzdUNWn@$+l=y1;vxCV!aE)cs;U<_PHjn31t?VHYfKY$F?kos>#JZ&IzjS zrYDv%9-Yt=(94=9%k8^I*Iwt;#f;BuO6Ej(-s$)K?%sB?R4Lx}uJ6O61pzHluZ}0M zG<-ODHBf1J&!pfdt8M>I__&{K-M6`OihJi8pF6<9d|i^mu%NlolWm#Aj*|z@OUy`n z@SNvP(gS6-yx;&%F^(BxO67L%CNn>heN*7D$M;tBlDTSceJ}Y<GIP1bc_~i$twg5k zrLHBiO1TYN{w`U%=le|-IfD&H9Ht!MYnEU(VlL#8W7B2&kaPS*&T%!CL)rpyjUTvL z!WH%~J!IvcZyemOv4Um$49#ad9Av~h9y1ljDD-h3DQvXR6FAQLXvYV8Uxnjp3yc#C zCZs=@&NHK?_uux{Q$jBCb<V5(+O_v)yJ@`9<7%A;zj+kc_#`w8pDIn9({n}r-nY9S z!v7k?s01dmp57B`x97phJy-2)-k;nv)z0Si$vvU-E`NT<H0R9j)dfcH^$wlfV;xv= zZffE7juX2X_xPPFSZ#W6wamYs!`d=+CmyEqsawu@@Zq^k-I0en?bj{mJo*sKXaDd+ zGT-{bACm3+A8a`G(3da2z~XS?)Wclumu1cc@`xIko;q2|CoOZXSfXq8ZprWdo0;Fe zmGH{oI#qdRzj1r~rn8(P=dN%VKD;}>R`}iBxf-2ETDE&~yf+ly{6=Ft?+4$O6`hgC zjNiRiKlJ;|kvaK?ZcqH7rna)v@_x(qwH(T6N%zbj<_6UWo3HGwyx+2&nN!|Cn0p^* zzW<}yGnT1|{b{J2EgFCFuF>7Ex|O>n;$KQFcTs<wn}5jFY^LP2-opCB!g^a}TCbkj zS2g+f<#3IKc0Afswg>VZ-m<t>d(9jr-KQ*4!TNu_W@fGwDJnUy-?UrT)uHd*@1JvX zPwHEC{kd{>>ykbh+YiY*F9>-TZFzCLXrJn|CmKC<+8&vi0{<?%I<J0ub*b#1_WaDl zne*mM=O|ls-1}zK+C1}V=cJyhF5mYgcTvrk2ToOPy+@p0|6eco&HwqqR%NeGwuS;+ zPdBmM3On1B_QK=-skN)0t=;!i{^NO(m(5aBCdelqeeikBKbfb#kGYp*%sY4Y%T(i) z=2`2nxlB}Jc~|yndBQ1!t-L9#B$q5N(lRdnx&Otf-}3AHI~c3XRQ9`WxUP32UwlE? zLC4(-Zs=+3Y--a8V7w#wl-VY;@NPxln!9_dRx@9m|KHdwyYGpw?()c6+qyKT*U221 zv*cC(?!!B;p3<CdcsRpqs{c|`?WN1DJr_yrYQ3ZxteWR@;Ihe*6*sTw-SSJ_ZgoP% zg|m5yB<q{zNk&u8-INQv;*+JFeNy#|!MfBb?{)}y<VGGl_51zu1<y|0D!DZG&;O-+ zpWQp!FiEGvuUzB*HNT&Gd8VYyt+^_DYJdEq9%j|Z9r5MupX8@&2-im)nDa!9H9BTz zho$?q!p3(QU0ZJoUdrcOIdQweYwpmOP0{zatrg#9At05`zdw*KUQ*+-p;E7%!;CsD z`J`Fda=vxOp#j!sn~a0RS}!a)z9}>y(Cu>Q6#bGOZ7vn&g$lJ|eV<mXl=NC|JG1)K z#1pYf2OnA;QW1XF%~SLL{xy-U+9&M~+9>v?pT6b#@@~nt$E+XDtH<5o2;RPGP0Q*x zY|1Z#Ccf?b`=qK-+$%53Dy=TH;k?J1bji-IO3EAMQe56uxTV-B7o9g!`mUs0#BU_@ zzQXO;kDepd(<WBv8wtG+bNgm^e8=x7>HonROM+#6JhP7p%bwqHAl>HT<{tH`i633~ z*BwkLH=gt+(rwb-6CRt`B_rSExlOB{Ht}g(O3Kb?$wvFa<V@x1;a{CjUE<kWT>peE zK1V9jwXU;R?#Rw#eI<%dk3aIr2+~&gwwM3Xm)xscuAKX;YRJ5?da1^_A08P@!UwmT z$0{e@+u&cl%Pl2&k$}KN{q|jM!G}y9&p4(N5&Kx<k$0hp+}pZ^k<+q{S(Pi+8UJkW zt*`w%Tm7v_k+??L$5M+34TY_f#S_$~>aKVac)`GIuCZ0c%bANaLyvECn0@P*TIBWS zDT^-qvxM!t{8ay=lSSBupk-U9x?5|Wef5BA$ESb4Z{BBjnP_L-Ebjm5J(ES!<jlh% z7u!~?R*Mub{F~MjZT~R!l+B(b)BhF^I>jV+c_>Np@7KJp^)>41I<vs75gV`99Q|x8 zebv8fhweP9<5#)DBD2lT<rXb?6cWh0w`i8{?u}(3Hnzn_k8VG)Q^)Sls#mkDtPA^Q z-4R^Q)smh+C++8wvci{3+G5v*_RmQU&k65d8f-Iv`?;u+k0-YAdmlBj+g)}~<94=W z>R-vG_A}l0Ht#Y0v8i-pRh;9y=lR*4uHUomWh|DL?GWp>>j;{7M@i}2^?NsXOCqX+ zpQgF)v;6Yd!QS=D@pblRqxSY4{bG{8=<NDe-=yMF%s0JClCsls-N`%I=0wcp;O?nO zU-wjWDRA*VzpzaGf7R2wy9M@aoB1)0?_<;6vV(QI8Mbos-C{jj=6F(=<IB|4nH+U9 zijLI%uT|Y^cS5^=%|_<zs^j-WU0UllzPE2Y`r$TeQ`#@8`oAzE1H&371_oi|rgVH# zeqvFIUPVgs+<=Q-hYdt(#s9Q(|Jrr*W%NC_+nx(^mIjBkwdn1PJ)9Mk7ZfY|Z}(d@ zjZN(r1tvLLJfBzm=tB3boZctV5owJxj(Vy*`kBL69r=Q5=aV-lFHO6f9dGuU`C8gx zq1)XvluwqNP1!0c|10>;AEk}kELVQ?^IULv!N(c0-y@~g{$SD3RFU)D{Df7i-7BMb z$p<l6i<_=5?$3Gtm$6pxp?B7iU7B5fH#cX5Pd<5nLj3Yfv12!Pa_&n|l~yu|(<rG* zj?>q_bN~LUwvv0Tt$XvcpPWvZ=(ezekJ;kNT!*E;^$*u=ds1oRFE4-K>H8ndoW(~s zXGqN}+9fqNBJ-w|?q@Eh+gF#yNWcGA?A9D~kI&ok#Ou5j*UeGG@OD9a?_W*^hM7L- zVVIg&lv4=`!@YCf=il-WK7N0G$^XMEYU5OboD@9Yv!B;KZqZxHGNEu?r=O_NH>TSX zx3_QetXTE?{`{L;#V@_kcw1t)N=PC5e0qBMbL-u5rs+pjgfox1Y;4<@?!WHtKI206 z>&`!9&Q+Y*mH7RQvzFZXd!Lg6{jOHeJ9GZm$~`Z1#2-qYKX>Ry;in`2%`@}w`(851 zv2|DED4iYldd;uzyx|{K+-?kU@hOo#{o39^Zqde!LzDNsI3=$z&v+t>_qD(0GoE~n zd4D_a5C0$0X-*rK%y7|p{`tw{^Y%~Kiw}G+jVu3iC*}D5m6t0lrDiPsurnfkjdhWu zVf{b$q<I_OWwPHWp4PR<T7pmJM6>AYUCkHg@;9*tUN2sAFHZPh!HxM}WX}J+{L=T$ zKl#axrLTJyUd}E5INAEeiTLZ`hpqQ(->keeaew;dEjntm&z0<s-*)`k+v#W3Z|wSf z^;zg<@w4am-}>{X^mF%mv;7r!{}kPp`8R8^y_48+%M*n*(RzoUs&s^9WyJ4(eYK<K z?L&^gW%oC)p7=6^d9&p7ER#5Xo^#3fKdNz<NyhoVd3d1w-QRlYmD{hzCNi&{&fWRy zj)>^VU#*(23q<6a=cZ*JeBRA;?)KaJ4@Bxq^&ZSyyz;ql!Q>6BVKU8GlNPtm=@jjb zQu*W^{6yvTd!I=5`h&%#*&LUba1>OXHaC__w3a&}pd#pDaWGP_!_>oUBM;X+HI+~C zJrkF2)^87+loUT<c|zhrB@JPoGX>YBR_~vfQE%#YdUDf3A&>nF!w;YJnR+F2qeH+= zr9Q#EN7!afcKJKo@Rdcysm#}p%Y%7TUeDd8`T0We@v{3x`Lg|PNqTQqFO~Xe)5E-P zim+O{%2COdHm7M%e9kV_NWFT!SWu;?>f*A1<1_SL6htp+xGZB(V$j&=`gMswP1LES zU7zRMChoh&^xQH<vgo-<PI1#Bv8TfB+m#M;Jyvv^&N6o|SCU+A%(>5dj_gl(el3$T zc+uwG&Xa0Nr&ezG_`^7Unzu<{LbAgKRsAKGmuGWq;;9z$Np@p4U+yfCxvSucCENdF zlGX*;4_nt=m2ZA}(%+VSjlJ&n{MfIu70JB^W%n~?Us#+tTX-S=x_aiY{ruOj#om{n z@1eG%{P(*Da(Oc6cUIkCnXobI`@v5(*$;M~o6(l%H&I2??8VM~)-nn^i|s$nG2B;} z?_PWT<=g`onm6YEEdO_*`oMbjvj6Lz^WD3A;B4n5(Kus?Ul+>rWADFwnD?|bJh6gT zV)a|;KN+zP9e#B5SuYHh+G;52{5`h%h0XJ8l0Qyuy}r)gq5iPxzU^%M2Agc|Z+-u3 z8vA1Fd=nY#|EkY*pFjKZ{>7gieOeRrnSACi-Qgp7YhogE-#oE3e(@n}noS!H=o+%g z2hO>0<E*Bd|Dhc{1>gBOXCJRQH)+CLk6l`(E`@7~_5VyvDw=&R<H)lkK~<u2W7qUE ze$H`~SYD|&b8&*?nVCM-Pq+8SsP!=!EY)Gvt(reu*!$ok2QROQi@tEo^PV1V=lAuD zhr#BfPsEp;@veXFl2IJB)6>;2&PU|!*A8x$u*t4<F8Sf{7Z#j-nKEyqz)aCix0amz z&e17%?&f{f)n&Qy=Om>zTTZmOwQD=mY{dw{IVa9!9pnD;-^O>bx?Fhd#DCLLo;=O) zQ;uJ|ch8)&2En}swnu#eHtgx)-mB1@Rpsv*m9)>B*?jp#qwR-7kFmbH$E<jmGkPP- z51!uwdS)A4LTqc4mfe2-?1|v*=Q~X29n0RyVrXTcs_zleeO~E6&(uWuri|9eN|nET zi7iKJ6aD0jzsRq5D)VhAk2bos?B}5wUoM`RecAB#;VqZ8{YvOHn7KuFYVxH8XI6&T zP8Lwma=tT(t!ZV>vMi<LA*EcCPn?x|H_zboOjes^OZ&v1wP^9Dh2By+x^l|yb4$1^ zufFp=D%*H)KKIfDp~yI=!)EHC8DVopS1s{wmF1ajIDg~iJ!h71-c;r6DiDl**cWvy zN@}a+##7fT4^CU*StgT^Q4%XYO~=XnxYQ?>Nk%=94UYv|ik=q#>1)gNTN!tTwQ|ea z%Z8#8l%^ehS=AY?vGGxo)R|)4ttJJ<UZJWF;va~2FF4S$tVh|we083Sj)s_ek(cMx zj?4?su5_u-_u3eycP22R)k<Ym#0TwZYj$`DzbvrKeqniIspVX&Ns@26+*R`)UVBxc z;d3?9IDVr<^`~QE789KpW$X8Hibv?D9h&`E>_%$bl21E?!;^QW6qPMFvTTO*1G~o) z_c-q}SzbEZcD5gDYR5gBxi?Pny1kVz-ejp-^D;$p_VW2N?rc-HFfG`a>(6?XnPFG| zS<eLtpN-ZXK5TPTboz?BEb*Tf{S!0Y@a;>PLq_C{rG}hKW|}Wg{nu;Fw&l}<o$vFn zES#Bb{pvyf?-1s^_s8sFEFW0zd&)OQE@F$z+e>q1oLp>BIbr#ak5(z)uD)E^e<b<Q z3aQCDvnqohIdA%RZpMT?br%bIPP(2CWPhLVz5Sc~CyVMg)fU~gw?yjFy+ksu^&b5$ zUvcroS=K6Rzr*elh6gWm<nX*{<tXr<c6guo#5)md{x^#E-kIUka${e@<bcY5CaYua zXKsI`rID!|e$~z9WzCX}vnI8@-&_|Ld0#lEEcD3UwRxM?ZvOR8YPD2?f5=Tv2cvE3 z9dAso#ju9*?ov;C!=fsAd-IucsqA%jtJv;tURB;Kw?$@E+wILg<%dm!{)RZeJNdcH zS*UAn*5vA<-E-AEkA1sp_I8V#Uh1W`lZ{&@o>KMo?A>-&L@U#)Xhz;5Jx}K#=aS%5 zk6Dvt?n<w;x-{j<g?kYbC#tC)|Jjz+Wuk6*#XQhyiQ>vf7Xpq3^zK}rlwqD$%<3dH zb&YfTI`&HqDV$kL{<sHEQeDxQC4bf<Yyn$WwTW_MEnocU#eyd<T@HEK$EK?7?>yCN z*5oxd?0RP|)}&k%?7i~v%8cKy3d)jaY3{x#5#qQoQh9ZA<07fE4t;;u%V)_gYjaDU zbhutw)p*t<9fn9|Q6s5II*h#{M>4#M{^YOt=UP1JaXs@>y;&32Ft)GDTgmu6bo(1N zn*hV^XNyi9JeVDBq7doG7q@B==gD714^D}kbr+lF#uaFy8XA#t?F83FpP8M<RJ>a* zt`hQf7G;`cn&hD_c{|*A)9D-01(VmfxCWn}Z2Z;2GQUxupHV?;_0zK<8ZoSeoq-ci zE_c?rZWO*aPxaf>DQ}iNjgC4}<KfNG?853+nzwKg$G((L3b9vC25{ez40)-%m~}zz zRJGlOhf6e<PWL=}JIvi9#b>McPQ}9ybmvAdk$fhs(cw^=w|Bils``_c{QEMtJeiRf z{yem3$?B5|@0t9$?>q^cY{6r+)KYTSwC6KKPR1;rx8W6+l!4)%_iL_aNUykYA;-mV z!m=suYV)65mJR&xZk1JdFw<)G60ZxN>zV&@ybW7^ciBgw(8jbLi7%PQX7&8sFOdB2 zy!~H!L~C(Qr>O^f>a^&W3=9nKnHU%(P+HuXdGX2lc_pb8C7>qb)=8(i4jBlzesB73 zU_arKS=4tgR>w6zB05eeyo~5xdQnBx<xlzI(3%A=md#dSE<P`Fh{M&}S;I)v?7+4q zL6XhSt=7FhWTV&|y|RaGVy?m2y{>!JPB}PPYX0tcAE?W%`XZQ3;wWdPMb!gl`>Cq0 zN_QC*=&0MyU7pTzT2*T6oynI<o}N4uqIR%mdF9So^_f3HGd~>QY!chD<FMubl?PW} z+VSsDu5ewH$(q)EB^sIGCuADlc1_{=qLkym`))zY<eLU9jwT%O0jbxMciI^pyCIz< zQo2F-+iwF&-+Ug&$TZ2KuUFso=CjX18`}p>aWjDk1_lN()Zhuos4Vs`DA6lP&Ox8> zHhOIJ&w-JF!JUbLK>$TpaY<>CURiE{uRoKa$e#R7{~yYlI!@E?JvRB{5znS$70OF% zPwxx3wd^g^>-FEac6V@2PqUh9ZoEE}b^W!{d1k&XA1^;Xd^g2pU%URLls@Je(v~ga zYZGU(Fiw-W@IH|D^dg;ATy|1i4c6k;HzKcQwJ;xLoAXsr#7lQiM+)ziBmO~K7@1qn z9bseUcgrrdYV_%qV_CCxLUhD!<tx_?*BIKgJ~%o-so&_*ytysMb!y)ClrH4vwD2uu zUs$@6x!StF+C=bK{)W8QQ=HqTdu*-x-RdSNFo#31(fOaK`e899yNi>zNpo!bD)bxF z<DRPiDYigyvWC}Wr};-@ihfD0+`gK*cD<W9=R`?<qtx3!+SSrcY!}~Tu=!st)3B|m z`_;FdIt{aTnx%1Cr?xHKAM$C>A>VZcm$mP_QBrh|&-x{FW<lWJwA7DiGe~y?1UB<9 zGBBuPbQ&R{osp7LJK>`DVFQ6<_qqSdzY9D#we;M=x0h$Qa<QiVdJvs)>xL|^r>EYo zU)N`g-F#C}eM)uz`+dLlHcRG|T$j!%WBGXaZ`QUM$ICzT30?iiRut;GVVcmk<^zYq zA`<OfWm_9v^1LoP&r6MzVmsHhu_x}nT;#_;Q}QEZ)=#^*OT&hjc_GKjcCT%3xcA?b zxzNUVpxcZk++d1<Q;4BT0~ep&OTjF6=C8*s_w4A&*MIy}GUv~&FZDVrSBG6$Udz1u z-`(AIdbazfEW4%H*)>Nn;bh?jdG-H6LXuDVY~G7L-n1s_*w=gh52L&TSAALk>_BAr zwKbm=h2Lifm<r##a_YQHy1K#1X0a0%52bfz1oZy=`;;A#|JQb!dh9KTI<%gVfnga7 z0|Pq)14Bx3fnG&!&eSQV^A;P3I9v~2`9ERftjH-sPI7B6tz?)i*2(Z_Vp^COe|pl? zBo;N*zrQYB$ymY|TJo^9_Pp)B>)ZD1%8xTDIFjm`QK#<X;<@90ZRN&G{1%mZ8Yd-h zlsURGNKd-_$!|i-w4WO<IbCi#!Dl|}A)|HG!L<oi@p@0CAO7N5<9ymFy{rAN`hu$} z-i*%~&K_JQYp2(+hh<ZV_SyWYnl}zCnCp{v=W!Ju&({X;ZBHbYipbbA6mr#_o4R_& zhIm=&sXfiUn>tcFlS2Q5M{0!&`>||!;4sN{armb;6}iSGU5|KHn=W3q`0DT4+f~;k z+~>@)te*Rf$Na8YY=*B9PgC$ky|)Ycc&={#$MOGtOF>AQ`bN*m-%K*4CTw<`=_^{P z=KVQw>a!JcZ&oKsO?_z|x~#Y4IA2ffh3^w(ROip-^;Yk8jeljoYTd=+&Z~-A1@VRv z(;3f}-fy`4_r#yI4`)vM-0(-?N|jv5Mk}%Y<k0>Lzb+MfY@WDk?%m=JUpu3lTT0i@ z_xrR&M)L#D^&s|n@`e1%Pif9LF==D(j(-lCuBO{2saq86Tpu6%?$xjR-!J>=>)&Gx z@MdIUU=U%zwQd_!f-y2MFl=iCu~1fVqif|sTUG?p0MR;!6L|qRXps@RUXWT?X$e{` z4&sCGwnj-VWW5E&Md(`5*9d{Mf$+9QHx#YKpcO;tn$hQwK^h@$P8LA6w>%{cT`T(J zEl4W}Z);Q)MAll7hprQStO}$HVrhX4l1{|P6}kbp(FSS|25gZ<HUK_sgKPk{x*K7@ zBXwj0P-}8zQ$QsENEa;9Kvf)w55n6T88uN%L8|c3%|Ng4K>8tJVUA)3q(Da3jb4Bw tbT8FHb^%0pMoJF40qBJo!hlEG@FFe1o0SbD!OOtQpu)_+uuT`l0|0bDesKT* diff --git a/src/ip/clk_wiz_0/clk_wiz_0.v b/src/ip/clk_wiz_0/clk_wiz_0.v index 2e3a203..088af81 100644 --- a/src/ip/clk_wiz_0/clk_wiz_0.v +++ b/src/ip/clk_wiz_0/clk_wiz_0.v @@ -1,23 +1,22 @@ + // file: clk_wiz_0.v -// -// (c) Copyright 2008 - 2013 Xilinx, Inc. All rights reserved. -// +// (c) Copyright 2017-2018, 2023 Advanced Micro Devices, Inc. All rights reserved. +// // This file contains confidential and proprietary information -// of Xilinx, Inc. and is protected under U.S. and -// international copyright and other intellectual property -// laws. -// +// of AMD and is protected under U.S. and international copyright +// and other intellectual property laws. +// // DISCLAIMER // This disclaimer is not a license and does not grant any // rights to the materials distributed herewith. Except as // otherwise provided in a valid license issued to you by -// Xilinx, and to the maximum extent permitted by applicable +// AMD, and to the maximum extent permitted by applicable // law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND -// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// WITH ALL FAULTS, AND AMD HEREBY DISCLAIMS ALL WARRANTIES // AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING // BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- // INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and -// (2) Xilinx shall not be liable (whether in contract or tort, +// (2) AMD shall not be liable (whether in contract or tort, // including negligence, or under any other theory of // liability) for any loss or damage of any kind or nature // related to, arising under or in connection with these @@ -26,11 +25,11 @@ // (including loss of data, profits, goodwill, or any type of // loss or damage suffered as a result of any action brought // by a third party) even if such damage or loss was -// reasonably foreseeable or Xilinx had been advised of the +// reasonably foreseeable or AMD had been advised of the // possibility of the same. -// +// // CRITICAL APPLICATIONS -// Xilinx products are not designed or intended to be fail- +// AMD products are not designed or intended to be fail- // safe, or for use in any application requiring fail-safe // performance, such as life-support or safety devices or // systems, Class III medical devices, nuclear facilities, @@ -39,13 +38,12 @@ // injury, or severe property or environmental damage // (individually and collectively, "Critical // Applications"). Customer assumes the sole risk and -// liability of any use of Xilinx products in Critical +// liability of any use of AMD products in Critical // Applications, subject only to applicable laws and // regulations governing limitations on product liability. -// +// // THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS // PART OF THIS FILE AT ALL TIMES. -// //---------------------------------------------------------------------------- // User entered comments //---------------------------------------------------------------------------- @@ -55,10 +53,10 @@ // Output Output Phase Duty Cycle Pk-to-Pk Phase // Clock Freq (MHz) (degrees) (%) Jitter (ps) Error (ps) //---------------------------------------------------------------------------- -// CLK_OUT1___100.000______0.000______50.0______151.366____132.063 -// CLK_OUT2___200.000______0.000______50.0______132.221____132.063 -// CLK_OUT3____12.000______0.000______50.0______231.952____132.063 -// CLK_OUT4____50.000______0.000______50.0______174.353____132.063 +// clk_out1__100.00000______0.000______50.0______151.366____132.063 +// clk_out2__200.00000______0.000______50.0______132.221____132.063 +// clk_out3__12.00000______0.000______50.0______231.952____132.063 +// clk_out4__50.00000______0.000______50.0______174.353____132.063 // //---------------------------------------------------------------------------- // Input Clock Freq (MHz) Input Jitter (UI) @@ -67,12 +65,10 @@ `timescale 1ps/1ps -(* CORE_GENERATION_INFO = "clk_wiz_0,clk_wiz_v5_2_0,{component_name=clk_wiz_0,use_phase_alignment=true,use_min_o_jitter=false,use_max_i_jitter=false,use_dyn_phase_shift=false,use_inclk_switchover=false,use_dyn_reconfig=false,enable_axi=0,feedback_source=FDBK_AUTO,PRIMITIVE=MMCM,num_out_clk=4,clkin1_period=10.0,clkin2_period=10.0,use_power_down=false,use_reset=true,use_locked=true,use_inclk_stopped=false,feedback_type=SINGLE,CLOCK_MGR_TYPE=NA,manual_override=false}" *) +(* CORE_GENERATION_INFO = "clk_wiz_0,clk_wiz_v6_0_14_0_0,{component_name=clk_wiz_0,use_phase_alignment=true,use_min_o_jitter=false,use_max_i_jitter=false,use_dyn_phase_shift=false,use_inclk_switchover=false,use_dyn_reconfig=false,enable_axi=0,feedback_source=FDBK_AUTO,PRIMITIVE=MMCM,num_out_clk=4,clkin1_period=10.0,clkin2_period=10.0,use_power_down=false,use_reset=true,use_locked=true,use_inclk_stopped=false,feedback_type=SINGLE,CLOCK_MGR_TYPE=NA,manual_override=false}" *) module clk_wiz_0 ( - // Clock in ports - input clk_in1, // Clock out ports output clk_out1, output clk_out2, @@ -80,13 +76,13 @@ module clk_wiz_0 output clk_out4, // Status and control signals input reset, - output locked + output locked, + // Clock in ports + input clk_in1 ); clk_wiz_0_clk_wiz inst ( - // Clock in ports - .clk_in1(clk_in1), // Clock out ports .clk_out1(clk_out1), .clk_out2(clk_out2), @@ -94,7 +90,9 @@ module clk_wiz_0 .clk_out4(clk_out4), // Status and control signals .reset(reset), - .locked(locked) + .locked(locked), + // Clock in ports + .clk_in1(clk_in1) ); endmodule diff --git a/src/ip/clk_wiz_0/clk_wiz_0.vho b/src/ip/clk_wiz_0/clk_wiz_0.vho index c6b126b..b02ca8e 100644 --- a/src/ip/clk_wiz_0/clk_wiz_0.vho +++ b/src/ip/clk_wiz_0/clk_wiz_0.vho @@ -1,22 +1,21 @@ --- --- (c) Copyright 2008 - 2013 Xilinx, Inc. All rights reserved. --- + +-- (c) Copyright 2017-2018, 2023 Advanced Micro Devices, Inc. All rights reserved. +-- -- This file contains confidential and proprietary information --- of Xilinx, Inc. and is protected under U.S. and --- international copyright and other intellectual property --- laws. --- +-- of AMD and is protected under U.S. and international copyright +-- and other intellectual property laws. +-- -- DISCLAIMER -- This disclaimer is not a license and does not grant any -- rights to the materials distributed herewith. Except as -- otherwise provided in a valid license issued to you by --- Xilinx, and to the maximum extent permitted by applicable +-- AMD, and to the maximum extent permitted by applicable -- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND --- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +-- WITH ALL FAULTS, AND AMD HEREBY DISCLAIMS ALL WARRANTIES -- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING -- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- -- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and --- (2) Xilinx shall not be liable (whether in contract or tort, +-- (2) AMD shall not be liable (whether in contract or tort, -- including negligence, or under any other theory of -- liability) for any loss or damage of any kind or nature -- related to, arising under or in connection with these @@ -25,11 +24,11 @@ -- (including loss of data, profits, goodwill, or any type of -- loss or damage suffered as a result of any action brought -- by a third party) even if such damage or loss was --- reasonably foreseeable or Xilinx had been advised of the +-- reasonably foreseeable or AMD had been advised of the -- possibility of the same. --- +-- -- CRITICAL APPLICATIONS --- Xilinx products are not designed or intended to be fail- +-- AMD products are not designed or intended to be fail- -- safe, or for use in any application requiring fail-safe -- performance, such as life-support or safety devices or -- systems, Class III medical devices, nuclear facilities, @@ -38,13 +37,12 @@ -- injury, or severe property or environmental damage -- (individually and collectively, "Critical -- Applications"). Customer assumes the sole risk and --- liability of any use of Xilinx products in Critical +-- liability of any use of AMD products in Critical -- Applications, subject only to applicable laws and -- regulations governing limitations on product liability. --- +-- -- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS -- PART OF THIS FILE AT ALL TIMES. --- ------------------------------------------------------------------------------ -- User entered comments ------------------------------------------------------------------------------ @@ -54,10 +52,10 @@ -- Output Output Phase Duty Cycle Pk-to-Pk Phase -- Clock Freq (MHz) (degrees) (%) Jitter (ps) Error (ps) ------------------------------------------------------------------------------ --- CLK_OUT1___100.000______0.000______50.0______151.366____132.063 --- CLK_OUT2___200.000______0.000______50.0______132.221____132.063 --- CLK_OUT3____12.000______0.000______50.0______231.952____132.063 --- CLK_OUT4____50.000______0.000______50.0______174.353____132.063 +-- clk_out1__100.00000______0.000______50.0______151.366____132.063 +-- clk_out2__200.00000______0.000______50.0______132.221____132.063 +-- clk_out3__12.00000______0.000______50.0______231.952____132.063 +-- clk_out4__50.00000______0.000______50.0______174.353____132.063 -- ------------------------------------------------------------------------------ -- Input Clock Freq (MHz) Input Jitter (UI) @@ -70,7 +68,6 @@ component clk_wiz_0 port (-- Clock in ports - clk_in1 : in std_logic; -- Clock out ports clk_out1 : out std_logic; clk_out2 : out std_logic; @@ -78,7 +75,8 @@ port clk_out4 : out std_logic; -- Status and control signals reset : in std_logic; - locked : out std_logic + locked : out std_logic; + clk_in1 : in std_logic ); end component; @@ -88,9 +86,6 @@ end component; ------------- Begin Cut here for INSTANTIATION Template ----- INST_TAG your_instance_name : clk_wiz_0 port map ( - - -- Clock in ports - clk_in1 => clk_in1, -- Clock out ports clk_out1 => clk_out1, clk_out2 => clk_out2, @@ -98,6 +93,8 @@ your_instance_name : clk_wiz_0 clk_out4 => clk_out4, -- Status and control signals reset => reset, - locked => locked + locked => locked, + -- Clock in ports + clk_in1 => clk_in1 ); -- INST_TAG_END ------ End INSTANTIATION Template ------------ diff --git a/src/ip/clk_wiz_0/clk_wiz_0.xci b/src/ip/clk_wiz_0/clk_wiz_0.xci index 79f1c0a..8735bea 100644 --- a/src/ip/clk_wiz_0/clk_wiz_0.xci +++ b/src/ip/clk_wiz_0/clk_wiz_0.xci @@ -1,525 +1,728 @@ -<?xml version="1.0" encoding="UTF-8"?> -<spirit:design xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <spirit:vendor>xilinx.com</spirit:vendor> - <spirit:library>xci</spirit:library> - <spirit:name>unknown</spirit:name> - <spirit:version>1.0</spirit:version> - <spirit:componentInstances> - <spirit:componentInstance> - <spirit:instanceName>clk_wiz_0</spirit:instanceName> - <spirit:componentRef spirit:vendor="xilinx.com" spirit:library="ip" spirit:name="clk_wiz" spirit:version="5.2"/> - <spirit:configurableElementValues> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CDDCDONE_PORT">cddcdone</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CDDCREQ_PORT">cddcreq</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKFB_IN_N_PORT">clkfb_in_n</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKFB_IN_PORT">clkfb_in</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKFB_IN_P_PORT">clkfb_in_p</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKFB_IN_SIGNALING">SINGLE</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKFB_OUT_N_PORT">clkfb_out_n</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKFB_OUT_PORT">clkfb_out</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKFB_OUT_P_PORT">clkfb_out_p</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKFB_STOPPED_PORT">clkfb_stopped</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKIN1_JITTER_PS">100.0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKIN2_JITTER_PS">100.0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT1_DRIVES">BUFG</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT1_DUTY_CYCLE">50.0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT1_OUT_FREQ">100.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT1_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT1_REQUESTED_DUTY_CYCLE">50.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT1_REQUESTED_OUT_FREQ">100.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT1_REQUESTED_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT1_SEQUENCE_NUMBER">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT2_DRIVES">BUFG</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT2_DUTY_CYCLE">50.0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT2_OUT_FREQ">200.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT2_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT2_REQUESTED_DUTY_CYCLE">50.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT2_REQUESTED_OUT_FREQ">200.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT2_REQUESTED_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT2_SEQUENCE_NUMBER">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT2_USED">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT3_DRIVES">BUFG</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT3_DUTY_CYCLE">50.0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT3_OUT_FREQ">12.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT3_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT3_REQUESTED_DUTY_CYCLE">50.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT3_REQUESTED_OUT_FREQ">12.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT3_REQUESTED_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT3_SEQUENCE_NUMBER">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT3_USED">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT4_DRIVES">BUFG</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT4_DUTY_CYCLE">50.0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT4_OUT_FREQ">50.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT4_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT4_REQUESTED_DUTY_CYCLE">50.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT4_REQUESTED_OUT_FREQ">50.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT4_REQUESTED_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT4_SEQUENCE_NUMBER">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT4_USED">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT5_DRIVES">BUFG</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT5_DUTY_CYCLE">50.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT5_OUT_FREQ">100.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT5_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT5_REQUESTED_DUTY_CYCLE">50.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT5_REQUESTED_OUT_FREQ">100.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT5_REQUESTED_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT5_SEQUENCE_NUMBER">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT5_USED">0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT6_DRIVES">BUFG</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT6_DUTY_CYCLE">50.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT6_OUT_FREQ">100.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT6_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT6_REQUESTED_DUTY_CYCLE">50.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT6_REQUESTED_OUT_FREQ">100.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT6_REQUESTED_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT6_SEQUENCE_NUMBER">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT6_USED">0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT7_DRIVES">BUFG</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT7_DUTY_CYCLE">50.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT7_OUT_FREQ">100.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT7_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT7_REQUESTED_DUTY_CYCLE">50.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT7_REQUESTED_OUT_FREQ">100.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT7_REQUESTED_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT7_SEQUENCE_NUMBER">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT7_USED">0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUTPHY_MODE">VCO</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLK_IN_SEL_PORT">clk_in_sel</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLK_OUT1_PORT">clk_out1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLK_OUT2_PORT">clk_out2</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLK_OUT3_PORT">clk_out3</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLK_OUT4_PORT">clk_out4</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLK_OUT5_PORT">clk_out5</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLK_OUT6_PORT">clk_out6</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLK_OUT7_PORT">clk_out7</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLK_VALID_PORT">CLK_VALID</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLOCK_MGR_TYPE">NA</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_DADDR_PORT">daddr</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_DCLK_PORT">dclk</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_DEN_PORT">den</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_DIN_PORT">din</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_DOUT_PORT">dout</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_DRDY_PORT">drdy</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_DWE_PORT">dwe</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_ENABLE_CLKOUTPHY">0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_FEEDBACK_SOURCE">FDBK_AUTO</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_HAS_CDDC">0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_INCLK_SUM_ROW0">Input Clock Freq (MHz) Input Jitter (UI)</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_INCLK_SUM_ROW1">__primary_________100.000____________0.010</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_INCLK_SUM_ROW2">no_secondary_input_clock </spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_INPUT_CLK_STOPPED_PORT">input_clk_stopped</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_INTERFACE_SELECTION">0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_IN_FREQ_UNITS">Units_MHz</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_JITTER_SEL">No_Jitter</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_LOCKED_PORT">locked</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_BANDWIDTH">OPTIMIZED</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKFBOUT_MULT_F">6.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKFBOUT_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKFBOUT_USE_FINE_PS">FALSE</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKIN1_PERIOD">10.0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKIN2_PERIOD">10.0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKOUT0_DIVIDE_F">6.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKOUT0_DUTY_CYCLE">0.500</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKOUT0_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKOUT0_USE_FINE_PS">FALSE</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKOUT1_DIVIDE">3</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKOUT1_DUTY_CYCLE">0.500</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKOUT1_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKOUT1_USE_FINE_PS">FALSE</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKOUT2_DIVIDE">50</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKOUT2_DUTY_CYCLE">0.500</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKOUT2_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKOUT2_USE_FINE_PS">FALSE</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKOUT3_DIVIDE">12</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKOUT3_DUTY_CYCLE">0.500</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKOUT3_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKOUT3_USE_FINE_PS">FALSE</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKOUT4_CASCADE">FALSE</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKOUT4_DIVIDE">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKOUT4_DUTY_CYCLE">0.500</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKOUT4_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKOUT4_USE_FINE_PS">FALSE</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKOUT5_DIVIDE">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKOUT5_DUTY_CYCLE">0.500</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKOUT5_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKOUT5_USE_FINE_PS">FALSE</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKOUT6_DIVIDE">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKOUT6_DUTY_CYCLE">0.500</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKOUT6_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKOUT6_USE_FINE_PS">FALSE</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLOCK_HOLD">FALSE</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_COMPENSATION">ZHOLD</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_DIVCLK_DIVIDE">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_NOTES">None</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_REF_JITTER1">0.010</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_REF_JITTER2">0.010</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_STARTUP_WAIT">FALSE</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_NUM_OUT_CLKS">4</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_OUTCLK_SUM_ROW0A"> Output Output Phase Duty Cycle Pk-to-Pk Phase</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_OUTCLK_SUM_ROW0B"> Clock Freq (MHz) (degrees) (%) Jitter (ps) Error (ps)</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_OUTCLK_SUM_ROW1">CLK_OUT1___100.000______0.000______50.0______151.366____132.063</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_OUTCLK_SUM_ROW2">CLK_OUT2___200.000______0.000______50.0______132.221____132.063</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_OUTCLK_SUM_ROW3">CLK_OUT3____12.000______0.000______50.0______231.952____132.063</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_OUTCLK_SUM_ROW4">CLK_OUT4____50.000______0.000______50.0______174.353____132.063</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_OUTCLK_SUM_ROW5">no_CLK_OUT5_output</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_OUTCLK_SUM_ROW6">no_CLK_OUT6_output</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_OUTCLK_SUM_ROW7">no_CLK_OUT7_output</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_OVERRIDE_MMCM">0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_OVERRIDE_PLL">0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PLATFORM">UNKNOWN</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PLL_BANDWIDTH">OPTIMIZED</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PLL_CLKFBOUT_MULT">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PLL_CLKFBOUT_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PLL_CLKIN_PERIOD">1.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PLL_CLKOUT0_DIVIDE">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PLL_CLKOUT0_DUTY_CYCLE">0.500</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PLL_CLKOUT0_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PLL_CLKOUT1_DIVIDE">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PLL_CLKOUT1_DUTY_CYCLE">0.500</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PLL_CLKOUT1_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PLL_CLKOUT2_DIVIDE">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PLL_CLKOUT2_DUTY_CYCLE">0.500</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PLL_CLKOUT2_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PLL_CLKOUT3_DIVIDE">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PLL_CLKOUT3_DUTY_CYCLE">0.500</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PLL_CLKOUT3_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PLL_CLKOUT4_DIVIDE">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PLL_CLKOUT4_DUTY_CYCLE">0.500</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PLL_CLKOUT4_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PLL_CLKOUT5_DIVIDE">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PLL_CLKOUT5_DUTY_CYCLE">0.500</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PLL_CLKOUT5_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PLL_CLK_FEEDBACK">CLKFBOUT</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PLL_COMPENSATION">SYSTEM_SYNCHRONOUS</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PLL_DIVCLK_DIVIDE">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PLL_NOTES">No notes</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PLL_REF_JITTER">0.010</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_POWER_DOWN_PORT">power_down</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PRIMARY_PORT">clk_in1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PRIMITIVE">MMCM</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PRIMTYPE_SEL">AUTO</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PRIM_IN_FREQ">100.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PRIM_IN_JITTER">0.010</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PRIM_IN_TIMEPERIOD">10.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PRIM_SOURCE">Single_ended_clock_capable_pin</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PSCLK_PORT">psclk</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PSDONE_PORT">psdone</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PSEN_PORT">psen</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PSINCDEC_PORT">psincdec</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_RESET_LOW">0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_RESET_PORT">reset</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_SECONDARY_IN_FREQ">100.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_SECONDARY_IN_JITTER">0.010</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_SECONDARY_IN_TIMEPERIOD">10.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_SECONDARY_PORT">clk_in2</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_SECONDARY_SOURCE">Single_ended_clock_capable_pin</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_SS_MODE">CENTER_HIGH</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_SS_MOD_PERIOD">4000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_SS_MOD_TIME">0.004</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_STATUS_PORT">STATUS</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_S_AXI_ADDR_WIDTH">11</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_S_AXI_DATA_WIDTH">32</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_USE_CLKFB_STOPPED">0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_USE_CLKOUT1_BAR">0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_USE_CLKOUT2_BAR">0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_USE_CLKOUT3_BAR">0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_USE_CLKOUT4_BAR">0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_USE_CLK_VALID">0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_USE_CLOCK_SEQUENCING">0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_USE_DYN_PHASE_SHIFT">0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_USE_DYN_RECONFIG">0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_USE_FAST_SIMULATION">0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_USE_FREEZE">0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_USE_FREQ_SYNTH">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_USE_INCLK_STOPPED">0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_USE_INCLK_SWITCHOVER">0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_USE_LOCKED">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_USE_MAX_I_JITTER">0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_USE_MIN_O_JITTER">0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_USE_MIN_POWER">0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_USE_POWER_DOWN">0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_USE_RESET">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_USE_SAFE_CLOCK_STARTUP">0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_USE_SPREAD_SPECTRUM">0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_USE_STATUS">0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.c_component_name">clk_wiz_0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CALC_DONE">empty</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CDDCDONE_PORT">cddcdone</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CDDCREQ_PORT">cddcreq</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKFB_IN_N_PORT">clkfb_in_n</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKFB_IN_PORT">clkfb_in</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKFB_IN_P_PORT">clkfb_in_p</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKFB_IN_SIGNALING">SINGLE</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKFB_OUT_N_PORT">clkfb_out_n</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKFB_OUT_PORT">clkfb_out</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKFB_OUT_P_PORT">clkfb_out_p</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKFB_STOPPED_PORT">clkfb_stopped</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKIN1_JITTER_PS">100.0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKIN1_UI_JITTER">0.010</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKIN2_JITTER_PS">100.0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKIN2_UI_JITTER">0.010</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_DRIVES">BUFG</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_JITTER">151.366</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_PHASE_ERROR">132.063</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_REQUESTED_DUTY_CYCLE">50.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_REQUESTED_OUT_FREQ">100.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_REQUESTED_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_SEQUENCE_NUMBER">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_USED">true</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_DRIVES">BUFG</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_JITTER">132.221</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_PHASE_ERROR">132.063</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_REQUESTED_DUTY_CYCLE">50.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_REQUESTED_OUT_FREQ">200.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_REQUESTED_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_SEQUENCE_NUMBER">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_USED">true</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_DRIVES">BUFG</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_JITTER">231.952</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_PHASE_ERROR">132.063</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_REQUESTED_DUTY_CYCLE">50.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_REQUESTED_OUT_FREQ">12.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_REQUESTED_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_SEQUENCE_NUMBER">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_USED">true</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT4_DRIVES">BUFG</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT4_JITTER">174.353</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT4_PHASE_ERROR">132.063</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT4_REQUESTED_DUTY_CYCLE">50.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT4_REQUESTED_OUT_FREQ">50.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT4_REQUESTED_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT4_SEQUENCE_NUMBER">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT4_USED">true</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT5_DRIVES">BUFG</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT5_JITTER">0.0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT5_PHASE_ERROR">0.0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT5_REQUESTED_DUTY_CYCLE">50.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT5_REQUESTED_OUT_FREQ">100.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT5_REQUESTED_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT5_SEQUENCE_NUMBER">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT5_USED">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT6_DRIVES">BUFG</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT6_JITTER">0.0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT6_PHASE_ERROR">0.0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT6_REQUESTED_DUTY_CYCLE">50.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT6_REQUESTED_OUT_FREQ">100.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT6_REQUESTED_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT6_SEQUENCE_NUMBER">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT6_USED">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_DRIVES">BUFG</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_JITTER">0.0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_PHASE_ERROR">0.0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_REQUESTED_DUTY_CYCLE">50.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_REQUESTED_OUT_FREQ">100.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_REQUESTED_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_SEQUENCE_NUMBER">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_USED">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUTPHY_REQUESTED_FREQ">600.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_IN1_BOARD_INTERFACE">Custom</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_IN2_BOARD_INTERFACE">Custom</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_IN_SEL_PORT">clk_in_sel</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT1_PORT">clk_out1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT1_USE_FINE_PS_GUI">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT2_PORT">clk_out2</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT2_USE_FINE_PS_GUI">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT3_PORT">clk_out3</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT3_USE_FINE_PS_GUI">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT4_PORT">clk_out4</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT4_USE_FINE_PS_GUI">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT5_PORT">clk_out5</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT5_USE_FINE_PS_GUI">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT6_PORT">clk_out6</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT6_USE_FINE_PS_GUI">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT7_PORT">clk_out7</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT7_USE_FINE_PS_GUI">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_VALID_PORT">CLK_VALID</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLOCK_MGR_TYPE">auto</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Component_Name">clk_wiz_0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DADDR_PORT">daddr</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DCLK_PORT">dclk</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DEN_PORT">den</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DIFF_CLK_IN1_BOARD_INTERFACE">Custom</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DIFF_CLK_IN2_BOARD_INTERFACE">Custom</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DIN_PORT">din</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DOUT_PORT">dout</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DRDY_PORT">drdy</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DWE_PORT">dwe</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ENABLE_CDDC">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ENABLE_CLKOUTPHY">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.FEEDBACK_SOURCE">FDBK_AUTO</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INPUT_CLK_STOPPED_PORT">input_clk_stopped</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INPUT_MODE">frequency</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INTERFACE_SELECTION">Enable_AXI</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.IN_FREQ_UNITS">Units_MHz</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.IN_JITTER_UNITS">Units_UI</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.JITTER_OPTIONS">UI</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.JITTER_SEL">No_Jitter</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.LOCKED_PORT">locked</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_BANDWIDTH">OPTIMIZED</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKFBOUT_MULT_F">6.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKFBOUT_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKFBOUT_USE_FINE_PS">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKIN1_PERIOD">10.0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKIN2_PERIOD">10.0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT0_DIVIDE_F">6.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT0_DUTY_CYCLE">0.500</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT0_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT0_USE_FINE_PS">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT1_DIVIDE">3</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT1_DUTY_CYCLE">0.500</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT1_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT1_USE_FINE_PS">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT2_DIVIDE">50</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT2_DUTY_CYCLE">0.500</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT2_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT2_USE_FINE_PS">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT3_DIVIDE">12</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT3_DUTY_CYCLE">0.500</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT3_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT3_USE_FINE_PS">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT4_CASCADE">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT4_DIVIDE">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT4_DUTY_CYCLE">0.500</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT4_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT4_USE_FINE_PS">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT5_DIVIDE">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT5_DUTY_CYCLE">0.500</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT5_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT5_USE_FINE_PS">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT6_DIVIDE">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT6_DUTY_CYCLE">0.500</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT6_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT6_USE_FINE_PS">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLOCK_HOLD">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_COMPENSATION">ZHOLD</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_DIVCLK_DIVIDE">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_NOTES">None</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_REF_JITTER1">0.010</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_REF_JITTER2">0.010</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_STARTUP_WAIT">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.NUM_OUT_CLKS">4</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.OVERRIDE_MMCM">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.OVERRIDE_PLL">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PHASE_DUTY_CONFIG">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLATFORM">UNKNOWN</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_BANDWIDTH">OPTIMIZED</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKFBOUT_MULT">4</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKFBOUT_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKIN_PERIOD">10.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT0_DIVIDE">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT0_DUTY_CYCLE">0.500</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT0_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT1_DIVIDE">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT1_DUTY_CYCLE">0.500</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT1_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT2_DIVIDE">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT2_DUTY_CYCLE">0.500</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT2_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT3_DIVIDE">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT3_DUTY_CYCLE">0.500</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT3_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT4_DIVIDE">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT4_DUTY_CYCLE">0.500</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT4_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT5_DIVIDE">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT5_DUTY_CYCLE">0.500</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT5_PHASE">0.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLK_FEEDBACK">CLKFBOUT</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_COMPENSATION">SYSTEM_SYNCHRONOUS</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_DIVCLK_DIVIDE">1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_NOTES">None</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_REF_JITTER">0.010</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.POWER_DOWN_PORT">power_down</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PRIMARY_PORT">clk_in1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PRIMITIVE">MMCM</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PRIMTYPE_SEL">mmcm_adv</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PRIM_IN_FREQ">100.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PRIM_IN_JITTER">0.010</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PRIM_IN_TIMEPERIOD">10.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PRIM_SOURCE">Single_ended_clock_capable_pin</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PSCLK_PORT">psclk</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PSDONE_PORT">psdone</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PSEN_PORT">psen</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PSINCDEC_PORT">psincdec</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.RELATIVE_INCLK">REL_PRIMARY</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.RESET_BOARD_INTERFACE">Custom</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.RESET_PORT">reset</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.RESET_TYPE">ACTIVE_HIGH</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.SECONDARY_IN_FREQ">100.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.SECONDARY_IN_JITTER">0.010</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.SECONDARY_IN_TIMEPERIOD">10.000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.SECONDARY_PORT">clk_in2</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.SECONDARY_SOURCE">Single_ended_clock_capable_pin</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.SS_MODE">CENTER_HIGH</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.SS_MOD_FREQ">250</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.SS_MOD_TIME">0.004</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.STATUS_PORT">STATUS</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.SUMMARY_STRINGS">empty</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_BOARD_FLOW">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_CLKFB_STOPPED">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_CLK_VALID">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_CLOCK_SEQUENCING">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_DYN_PHASE_SHIFT">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_DYN_RECONFIG">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_FREEZE">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_FREQ_SYNTH">true</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_INCLK_STOPPED">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_INCLK_SWITCHOVER">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_LOCKED">true</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_MAX_I_JITTER">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_MIN_O_JITTER">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_MIN_POWER">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_PHASE_ALIGNMENT">true</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_POWER_DOWN">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_RESET">true</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_SAFE_CLOCK_STARTUP">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_SPREAD_SPECTRUM">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_STATUS">false</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.ARCHITECTURE">artix7</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.BOARD"/> - <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.DEVICE">xc7a200t</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.PACKAGE">sbg484</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.PREFHDL">VHDL</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.SILICON_REVISION"/> - <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.SIMULATOR_LANGUAGE">MIXED</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.SPEEDGRADE">-1</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.TEMPERATURE_GRADE">C</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.USE_RDI_CUSTOMIZATION">TRUE</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.USE_RDI_GENERATION">TRUE</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.IPCONTEXT">IP_Flow</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.IPREVISION">0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.MANAGED">TRUE</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.OUTPUTDIR">.</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.SELECTEDSIMMODEL"/> - <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.SHAREDDIR">.</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.SWVERSION">2015.3</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.SYNTHESISFLOW">OUT_OF_CONTEXT</spirit:configurableElementValue> - </spirit:configurableElementValues> - <spirit:vendorExtensions> - <xilinx:componentInstanceExtensions> - <xilinx:configElementInfos> - <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.CLKOUT1_JITTER" xilinx:valueSource="user"/> - <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.CLKOUT1_PHASE_ERROR" xilinx:valueSource="user"/> - <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.CLKOUT2_JITTER" xilinx:valueSource="user"/> - <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.CLKOUT2_PHASE_ERROR" xilinx:valueSource="user"/> - <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.CLKOUT2_USED" xilinx:valueSource="user"/> - <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.CLKOUT3_JITTER" xilinx:valueSource="user"/> - <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.CLKOUT3_PHASE_ERROR" xilinx:valueSource="user"/> - <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.CLKOUT3_USED" xilinx:valueSource="user"/> - <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.CLKOUT4_JITTER" xilinx:valueSource="user"/> - <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.CLKOUT4_PHASE_ERROR" xilinx:valueSource="user"/> - <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.CLKOUT4_USED" xilinx:valueSource="user"/> - <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.MMCM_CLKFBOUT_MULT_F" xilinx:valueSource="user"/> - <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.MMCM_CLKOUT0_DIVIDE_F" xilinx:valueSource="user"/> - <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.MMCM_CLKOUT1_DIVIDE" xilinx:valueSource="user"/> - <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.MMCM_CLKOUT2_DIVIDE" xilinx:valueSource="user"/> - <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.MMCM_CLKOUT3_DIVIDE" xilinx:valueSource="user"/> - <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.MMCM_DIVCLK_DIVIDE" xilinx:valueSource="user"/> - <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.NUM_OUT_CLKS" xilinx:valueSource="user"/> - </xilinx:configElementInfos> - </xilinx:componentInstanceExtensions> - </spirit:vendorExtensions> - </spirit:componentInstance> - </spirit:componentInstances> -</spirit:design> +{ + "schema": "xilinx.com:schema:json_instance:1.0", + "ip_inst": { + "xci_name": "clk_wiz_0", + "component_reference": "xilinx.com:ip:clk_wiz:6.0", + "ip_revision": "14", + "gen_directory": ".", + "parameters": { + "component_parameters": { + "Component_Name": [ { "value": "clk_wiz_0", "resolve_type": "user", "usage": "all" } ], + "USER_CLK_FREQ0": [ { "value": "100.0", "resolve_type": "user", "format": "float", "usage": "all" } ], + "USER_CLK_FREQ1": [ { "value": "100.0", "resolve_type": "user", "format": "float", "usage": "all" } ], + "USER_CLK_FREQ2": [ { "value": "100.0", "resolve_type": "user", "format": "float", "usage": "all" } ], + "USER_CLK_FREQ3": [ { "value": "100.0", "resolve_type": "user", "format": "float", "usage": "all" } ], + "ENABLE_CLOCK_MONITOR": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "OPTIMIZE_CLOCKING_STRUCTURE_EN": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "ENABLE_USER_CLOCK0": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "ENABLE_USER_CLOCK1": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "ENABLE_USER_CLOCK2": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "ENABLE_USER_CLOCK3": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "Enable_PLL0": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "Enable_PLL1": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "REF_CLK_FREQ": [ { "value": "100.0", "resolve_type": "user", "format": "float", "usage": "all" } ], + "PRECISION": [ { "value": "1", "resolve_type": "user", "format": "float", "usage": "all" } ], + "PRIMITIVE": [ { "value": "MMCM", "resolve_type": "user", "usage": "all" } ], + "PRIMTYPE_SEL": [ { "value": "mmcm_adv", "resolve_type": "user", "usage": "all" } ], + "CLOCK_MGR_TYPE": [ { "value": "auto", "resolve_type": "user", "usage": "all" } ], + "USE_FREQ_SYNTH": [ { "value": "true", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "USE_SPREAD_SPECTRUM": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "USE_PHASE_ALIGNMENT": [ { "value": "true", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "USE_MIN_POWER": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "USE_DYN_PHASE_SHIFT": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "USE_DYN_RECONFIG": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "JITTER_SEL": [ { "value": "No_Jitter", "resolve_type": "user", "usage": "all" } ], + "PRIM_IN_FREQ": [ { "value": "100.000", "resolve_type": "user", "format": "float", "usage": "all" } ], + "PRIM_IN_TIMEPERIOD": [ { "value": "10.000", "resolve_type": "user", "format": "float", "usage": "all" } ], + "IN_FREQ_UNITS": [ { "value": "Units_MHz", "resolve_type": "user", "usage": "all" } ], + "PHASESHIFT_MODE": [ { "value": "WAVEFORM", "resolve_type": "user", "usage": "all" } ], + "IN_JITTER_UNITS": [ { "value": "Units_UI", "resolve_type": "user", "usage": "all" } ], + "RELATIVE_INCLK": [ { "value": "REL_PRIMARY", "resolve_type": "user", "usage": "all" } ], + "USE_INCLK_SWITCHOVER": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "SECONDARY_IN_FREQ": [ { "value": "100.000", "resolve_type": "user", "format": "float", "usage": "all" } ], + "SECONDARY_IN_TIMEPERIOD": [ { "value": "10.000", "resolve_type": "user", "format": "float", "usage": "all" } ], + "SECONDARY_PORT": [ { "value": "clk_in2", "resolve_type": "user", "usage": "all" } ], + "SECONDARY_SOURCE": [ { "value": "Single_ended_clock_capable_pin", "resolve_type": "user", "usage": "all" } ], + "JITTER_OPTIONS": [ { "value": "UI", "resolve_type": "user", "usage": "all" } ], + "CLKIN1_UI_JITTER": [ { "value": "0.010", "resolve_type": "user", "format": "float", "usage": "all" } ], + "CLKIN2_UI_JITTER": [ { "value": "0.010", "resolve_type": "user", "format": "float", "usage": "all" } ], + "PRIM_IN_JITTER": [ { "value": "0.010", "resolve_type": "user", "format": "float", "usage": "all" } ], + "SECONDARY_IN_JITTER": [ { "value": "0.010", "resolve_type": "user", "format": "float", "usage": "all" } ], + "CLKIN1_JITTER_PS": [ { "value": "100.0", "resolve_type": "user", "format": "float", "usage": "all" } ], + "CLKIN2_JITTER_PS": [ { "value": "100.0", "resolve_type": "user", "format": "float", "usage": "all" } ], + "CLKOUT1_USED": [ { "value": "true", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "CLKOUT2_USED": [ { "value": "true", "value_src": "user", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "CLKOUT3_USED": [ { "value": "true", "value_src": "user", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "CLKOUT4_USED": [ { "value": "true", "value_src": "user", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "CLKOUT5_USED": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "CLKOUT6_USED": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "CLKOUT7_USED": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "NUM_OUT_CLKS": [ { "value": "4", "value_src": "user", "resolve_type": "user", "format": "long", "usage": "all" } ], + "CLK_OUT1_USE_FINE_PS_GUI": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "CLK_OUT2_USE_FINE_PS_GUI": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "CLK_OUT3_USE_FINE_PS_GUI": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "CLK_OUT4_USE_FINE_PS_GUI": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "CLK_OUT5_USE_FINE_PS_GUI": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "CLK_OUT6_USE_FINE_PS_GUI": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "CLK_OUT7_USE_FINE_PS_GUI": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "PRIMARY_PORT": [ { "value": "clk_in1", "resolve_type": "user", "usage": "all" } ], + "CLK_OUT1_PORT": [ { "value": "clk_out1", "resolve_type": "user", "usage": "all" } ], + "CLK_OUT2_PORT": [ { "value": "clk_out2", "resolve_type": "user", "usage": "all" } ], + "CLK_OUT3_PORT": [ { "value": "clk_out3", "resolve_type": "user", "usage": "all" } ], + "CLK_OUT4_PORT": [ { "value": "clk_out4", "resolve_type": "user", "usage": "all" } ], + "CLK_OUT5_PORT": [ { "value": "clk_out5", "resolve_type": "user", "usage": "all" } ], + "CLK_OUT6_PORT": [ { "value": "clk_out6", "resolve_type": "user", "usage": "all" } ], + "CLK_OUT7_PORT": [ { "value": "clk_out7", "resolve_type": "user", "usage": "all" } ], + "DADDR_PORT": [ { "value": "daddr", "resolve_type": "user", "usage": "all" } ], + "DCLK_PORT": [ { "value": "dclk", "resolve_type": "user", "usage": "all" } ], + "DRDY_PORT": [ { "value": "drdy", "resolve_type": "user", "usage": "all" } ], + "DWE_PORT": [ { "value": "dwe", "resolve_type": "user", "usage": "all" } ], + "DIN_PORT": [ { "value": "din", "resolve_type": "user", "usage": "all" } ], + "DOUT_PORT": [ { "value": "dout", "resolve_type": "user", "usage": "all" } ], + "DEN_PORT": [ { "value": "den", "resolve_type": "user", "usage": "all" } ], + "PSCLK_PORT": [ { "value": "psclk", "resolve_type": "user", "usage": "all" } ], + "PSEN_PORT": [ { "value": "psen", "resolve_type": "user", "usage": "all" } ], + "PSINCDEC_PORT": [ { "value": "psincdec", "resolve_type": "user", "usage": "all" } ], + "PSDONE_PORT": [ { "value": "psdone", "resolve_type": "user", "usage": "all" } ], + "CLKOUT1_REQUESTED_OUT_FREQ": [ { "value": "100.000", "resolve_type": "user", "format": "float", "usage": "all" } ], + "CLKOUT1_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ], + "CLKOUT1_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "user", "format": "float", "usage": "all" } ], + "CLKOUT2_REQUESTED_OUT_FREQ": [ { "value": "200.000", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ], + "CLKOUT2_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ], + "CLKOUT2_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "user", "format": "float", "usage": "all" } ], + "CLKOUT3_REQUESTED_OUT_FREQ": [ { "value": "12.000", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ], + "CLKOUT3_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ], + "CLKOUT3_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "user", "format": "float", "usage": "all" } ], + "CLKOUT4_REQUESTED_OUT_FREQ": [ { "value": "50.000", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ], + "CLKOUT4_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ], + "CLKOUT4_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "user", "format": "float", "usage": "all" } ], + "CLKOUT5_REQUESTED_OUT_FREQ": [ { "value": "100.000", "resolve_type": "user", "format": "float", "usage": "all" } ], + "CLKOUT5_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ], + "CLKOUT5_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "user", "format": "float", "usage": "all" } ], + "CLKOUT6_REQUESTED_OUT_FREQ": [ { "value": "100.000", "resolve_type": "user", "format": "float", "usage": "all" } ], + "CLKOUT6_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ], + "CLKOUT6_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "user", "format": "float", "usage": "all" } ], + "CLKOUT7_REQUESTED_OUT_FREQ": [ { "value": "100.000", "resolve_type": "user", "format": "float", "usage": "all" } ], + "CLKOUT7_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ], + "CLKOUT7_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "user", "format": "float", "usage": "all" } ], + "USE_MAX_I_JITTER": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "USE_MIN_O_JITTER": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "CLKOUT1_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "CLKOUT2_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "CLKOUT3_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "CLKOUT4_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "CLKOUT5_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "CLKOUT6_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "CLKOUT7_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "PRIM_SOURCE": [ { "value": "Single_ended_clock_capable_pin", "resolve_type": "user", "usage": "all" } ], + "CLKOUT1_DRIVES": [ { "value": "BUFG", "resolve_type": "user", "usage": "all" } ], + "CLKOUT2_DRIVES": [ { "value": "BUFG", "resolve_type": "user", "usage": "all" } ], + "CLKOUT3_DRIVES": [ { "value": "BUFG", "resolve_type": "user", "usage": "all" } ], + "CLKOUT4_DRIVES": [ { "value": "BUFG", "resolve_type": "user", "usage": "all" } ], + "CLKOUT5_DRIVES": [ { "value": "BUFG", "resolve_type": "user", "usage": "all" } ], + "CLKOUT6_DRIVES": [ { "value": "BUFG", "resolve_type": "user", "usage": "all" } ], + "CLKOUT7_DRIVES": [ { "value": "BUFG", "resolve_type": "user", "usage": "all" } ], + "FEEDBACK_SOURCE": [ { "value": "FDBK_AUTO", "resolve_type": "user", "usage": "all" } ], + "CLKFB_IN_SIGNALING": [ { "value": "SINGLE", "resolve_type": "user", "usage": "all" } ], + "CLKFB_IN_PORT": [ { "value": "clkfb_in", "resolve_type": "user", "usage": "all" } ], + "CLKFB_IN_P_PORT": [ { "value": "clkfb_in_p", "resolve_type": "user", "usage": "all" } ], + "CLKFB_IN_N_PORT": [ { "value": "clkfb_in_n", "resolve_type": "user", "usage": "all" } ], + "CLKFB_OUT_PORT": [ { "value": "clkfb_out", "resolve_type": "user", "usage": "all" } ], + "CLKFB_OUT_P_PORT": [ { "value": "clkfb_out_p", "resolve_type": "user", "usage": "all" } ], + "CLKFB_OUT_N_PORT": [ { "value": "clkfb_out_n", "resolve_type": "user", "usage": "all" } ], + "PLATFORM": [ { "value": "UNKNOWN", "resolve_type": "user", "usage": "all" } ], + "SUMMARY_STRINGS": [ { "value": "empty", "resolve_type": "user", "usage": "all" } ], + "USE_LOCKED": [ { "value": "true", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "CALC_DONE": [ { "value": "empty", "resolve_type": "user", "usage": "all" } ], + "USE_RESET": [ { "value": "true", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "USE_POWER_DOWN": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "USE_STATUS": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "USE_FREEZE": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "USE_CLK_VALID": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "USE_INCLK_STOPPED": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "USE_CLKFB_STOPPED": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "RESET_PORT": [ { "value": "reset", "resolve_type": "user", "usage": "all" } ], + "LOCKED_PORT": [ { "value": "locked", "resolve_type": "user", "usage": "all" } ], + "POWER_DOWN_PORT": [ { "value": "power_down", "resolve_type": "user", "usage": "all" } ], + "CLK_VALID_PORT": [ { "value": "CLK_VALID", "resolve_type": "user", "usage": "all" } ], + "STATUS_PORT": [ { "value": "STATUS", "resolve_type": "user", "usage": "all" } ], + "CLK_IN_SEL_PORT": [ { "value": "clk_in_sel", "resolve_type": "user", "usage": "all" } ], + "INPUT_CLK_STOPPED_PORT": [ { "value": "input_clk_stopped", "resolve_type": "user", "usage": "all" } ], + "CLKFB_STOPPED_PORT": [ { "value": "clkfb_stopped", "resolve_type": "user", "usage": "all" } ], + "SS_MODE": [ { "value": "CENTER_HIGH", "resolve_type": "user", "usage": "all" } ], + "SS_MOD_FREQ": [ { "value": "250", "resolve_type": "user", "format": "float", "usage": "all" } ], + "SS_MOD_TIME": [ { "value": "0.004", "resolve_type": "user", "format": "float", "usage": "all" } ], + "OVERRIDE_MMCM": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "MMCM_NOTES": [ { "value": "None", "resolve_type": "user", "usage": "all" } ], + "MMCM_DIVCLK_DIVIDE": [ { "value": "1", "value_src": "user", "resolve_type": "user", "format": "long", "usage": "all" } ], + "MMCM_BANDWIDTH": [ { "value": "OPTIMIZED", "resolve_type": "user", "usage": "all" } ], + "MMCM_CLKFBOUT_MULT_F": [ { "value": "6.000", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ], + "MMCM_CLKFBOUT_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ], + "MMCM_CLKFBOUT_USE_FINE_PS": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "MMCM_CLKIN1_PERIOD": [ { "value": "10.0", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ], + "MMCM_CLKIN2_PERIOD": [ { "value": "10.0", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ], + "MMCM_CLKOUT4_CASCADE": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "MMCM_CLOCK_HOLD": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "MMCM_COMPENSATION": [ { "value": "ZHOLD", "resolve_type": "user", "usage": "all" } ], + "MMCM_REF_JITTER1": [ { "value": "0.010", "resolve_type": "user", "format": "float", "usage": "all" } ], + "MMCM_REF_JITTER2": [ { "value": "0.010", "resolve_type": "user", "format": "float", "usage": "all" } ], + "MMCM_STARTUP_WAIT": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "MMCM_CLKOUT0_DIVIDE_F": [ { "value": "6.000", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ], + "MMCM_CLKOUT0_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ], + "MMCM_CLKOUT0_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ], + "MMCM_CLKOUT0_USE_FINE_PS": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "MMCM_CLKOUT1_DIVIDE": [ { "value": "3", "value_src": "user", "resolve_type": "user", "format": "long", "usage": "all" } ], + "MMCM_CLKOUT1_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ], + "MMCM_CLKOUT1_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ], + "MMCM_CLKOUT1_USE_FINE_PS": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "MMCM_CLKOUT2_DIVIDE": [ { "value": "50", "value_src": "user", "resolve_type": "user", "format": "long", "usage": "all" } ], + "MMCM_CLKOUT2_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ], + "MMCM_CLKOUT2_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ], + "MMCM_CLKOUT2_USE_FINE_PS": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "MMCM_CLKOUT3_DIVIDE": [ { "value": "12", "value_src": "user", "resolve_type": "user", "format": "long", "usage": "all" } ], + "MMCM_CLKOUT3_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ], + "MMCM_CLKOUT3_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ], + "MMCM_CLKOUT3_USE_FINE_PS": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "MMCM_CLKOUT4_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ], + "MMCM_CLKOUT4_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ], + "MMCM_CLKOUT4_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ], + "MMCM_CLKOUT4_USE_FINE_PS": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "MMCM_CLKOUT5_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ], + "MMCM_CLKOUT5_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ], + "MMCM_CLKOUT5_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ], + "MMCM_CLKOUT5_USE_FINE_PS": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "MMCM_CLKOUT6_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ], + "MMCM_CLKOUT6_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ], + "MMCM_CLKOUT6_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ], + "MMCM_CLKOUT6_USE_FINE_PS": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "OVERRIDE_PLL": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "PLL_NOTES": [ { "value": "None", "resolve_type": "user", "usage": "all" } ], + "PLL_BANDWIDTH": [ { "value": "OPTIMIZED", "resolve_type": "user", "usage": "all" } ], + "PLL_CLKFBOUT_MULT": [ { "value": "4", "resolve_type": "user", "format": "long", "usage": "all" } ], + "PLL_CLKFBOUT_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ], + "PLL_CLK_FEEDBACK": [ { "value": "CLKFBOUT", "resolve_type": "user", "usage": "all" } ], + "PLL_DIVCLK_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ], + "PLL_CLKIN_PERIOD": [ { "value": "10.000", "resolve_type": "user", "format": "float", "usage": "all" } ], + "PLL_COMPENSATION": [ { "value": "SYSTEM_SYNCHRONOUS", "resolve_type": "user", "usage": "all" } ], + "PLL_REF_JITTER": [ { "value": "0.010", "resolve_type": "user", "format": "float", "usage": "all" } ], + "PLL_CLKOUT0_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ], + "PLL_CLKOUT0_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ], + "PLL_CLKOUT0_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ], + "PLL_CLKOUT1_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ], + "PLL_CLKOUT1_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ], + "PLL_CLKOUT1_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ], + "PLL_CLKOUT2_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ], + "PLL_CLKOUT2_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ], + "PLL_CLKOUT2_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ], + "PLL_CLKOUT3_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ], + "PLL_CLKOUT3_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ], + "PLL_CLKOUT3_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ], + "PLL_CLKOUT4_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ], + "PLL_CLKOUT4_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ], + "PLL_CLKOUT4_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ], + "PLL_CLKOUT5_DIVIDE": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ], + "PLL_CLKOUT5_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "user", "format": "float", "usage": "all" } ], + "PLL_CLKOUT5_PHASE": [ { "value": "0.000", "resolve_type": "user", "format": "float", "usage": "all" } ], + "RESET_TYPE": [ { "value": "ACTIVE_HIGH", "resolve_type": "user", "usage": "all" } ], + "USE_SAFE_CLOCK_STARTUP": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "USE_CLOCK_SEQUENCING": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "CLKOUT1_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ], + "CLKOUT2_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ], + "CLKOUT3_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ], + "CLKOUT4_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ], + "CLKOUT5_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ], + "CLKOUT6_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ], + "CLKOUT7_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ], + "USE_BOARD_FLOW": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "CLK_IN1_BOARD_INTERFACE": [ { "value": "Custom", "resolve_type": "user", "usage": "all" } ], + "CLK_IN2_BOARD_INTERFACE": [ { "value": "Custom", "resolve_type": "user", "usage": "all" } ], + "DIFF_CLK_IN1_BOARD_INTERFACE": [ { "value": "Custom", "resolve_type": "user", "usage": "all" } ], + "DIFF_CLK_IN2_BOARD_INTERFACE": [ { "value": "Custom", "resolve_type": "user", "usage": "all" } ], + "AUTO_PRIMITIVE": [ { "value": "MMCM", "resolve_type": "user", "usage": "all" } ], + "RESET_BOARD_INTERFACE": [ { "value": "Custom", "resolve_type": "user", "usage": "all" } ], + "ENABLE_CDDC": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "CDDCDONE_PORT": [ { "value": "cddcdone", "resolve_type": "user", "usage": "all" } ], + "CDDCREQ_PORT": [ { "value": "cddcreq", "resolve_type": "user", "usage": "all" } ], + "ENABLE_CLKOUTPHY": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "CLKOUTPHY_REQUESTED_FREQ": [ { "value": "600.000", "resolve_type": "user", "format": "float", "usage": "all" } ], + "CLKOUT1_JITTER": [ { "value": "151.366", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ], + "CLKOUT1_PHASE_ERROR": [ { "value": "132.063", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ], + "CLKOUT2_JITTER": [ { "value": "132.221", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ], + "CLKOUT2_PHASE_ERROR": [ { "value": "132.063", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ], + "CLKOUT3_JITTER": [ { "value": "231.952", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ], + "CLKOUT3_PHASE_ERROR": [ { "value": "132.063", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ], + "CLKOUT4_JITTER": [ { "value": "174.353", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ], + "CLKOUT4_PHASE_ERROR": [ { "value": "132.063", "value_src": "user", "resolve_type": "user", "format": "float", "usage": "all" } ], + "CLKOUT5_JITTER": [ { "value": "0.0", "resolve_type": "user", "format": "float", "usage": "all" } ], + "CLKOUT5_PHASE_ERROR": [ { "value": "0.0", "resolve_type": "user", "format": "float", "usage": "all" } ], + "CLKOUT6_JITTER": [ { "value": "0.0", "resolve_type": "user", "format": "float", "usage": "all" } ], + "CLKOUT6_PHASE_ERROR": [ { "value": "0.0", "resolve_type": "user", "format": "float", "usage": "all" } ], + "CLKOUT7_JITTER": [ { "value": "0.0", "resolve_type": "user", "format": "float", "usage": "all" } ], + "CLKOUT7_PHASE_ERROR": [ { "value": "0.0", "resolve_type": "user", "format": "float", "usage": "all" } ], + "INPUT_MODE": [ { "value": "frequency", "resolve_type": "user", "usage": "all" } ], + "INTERFACE_SELECTION": [ { "value": "Enable_AXI", "resolve_type": "user", "usage": "all" } ], + "AXI_DRP": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ], + "PHASE_DUTY_CONFIG": [ { "value": "false", "resolve_type": "user", "format": "bool", "usage": "all" } ] + }, + "model_parameters": { + "C_CLKOUT2_USED": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_USER_CLK_FREQ0": [ { "value": "100.0", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_AUTO_PRIMITIVE": [ { "value": "MMCM", "resolve_type": "generated", "usage": "all" } ], + "C_USER_CLK_FREQ1": [ { "value": "100.0", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_USER_CLK_FREQ2": [ { "value": "100.0", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_USER_CLK_FREQ3": [ { "value": "100.0", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_ENABLE_CLOCK_MONITOR": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_ENABLE_USER_CLOCK0": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_ENABLE_USER_CLOCK1": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_ENABLE_USER_CLOCK2": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_ENABLE_USER_CLOCK3": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_Enable_PLL0": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_Enable_PLL1": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_REF_CLK_FREQ": [ { "value": "100.0", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_PRECISION": [ { "value": "1", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT3_USED": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_CLKOUT4_USED": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_CLKOUT5_USED": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_CLKOUT6_USED": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_CLKOUT7_USED": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_USE_CLKOUT1_BAR": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_USE_CLKOUT2_BAR": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_USE_CLKOUT3_BAR": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_USE_CLKOUT4_BAR": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "c_component_name": [ { "value": "clk_wiz_0", "resolve_type": "generated", "usage": "all" } ], + "C_PLATFORM": [ { "value": "UNKNOWN", "resolve_type": "generated", "usage": "all" } ], + "C_USE_FREQ_SYNTH": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_USE_PHASE_ALIGNMENT": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_PRIM_IN_JITTER": [ { "value": "0.010", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_SECONDARY_IN_JITTER": [ { "value": "0.010", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_JITTER_SEL": [ { "value": "No_Jitter", "resolve_type": "generated", "usage": "all" } ], + "C_USE_MIN_POWER": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_USE_MIN_O_JITTER": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_USE_MAX_I_JITTER": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_USE_DYN_PHASE_SHIFT": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_OPTIMIZE_CLOCKING_STRUCTURE_EN": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_USE_INCLK_SWITCHOVER": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_USE_DYN_RECONFIG": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_USE_SPREAD_SPECTRUM": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_USE_FAST_SIMULATION": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_PRIMTYPE_SEL": [ { "value": "AUTO", "resolve_type": "generated", "usage": "all" } ], + "C_USE_CLK_VALID": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_PRIM_IN_FREQ": [ { "value": "100.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_PRIM_IN_TIMEPERIOD": [ { "value": "10.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_IN_FREQ_UNITS": [ { "value": "Units_MHz", "resolve_type": "generated", "usage": "all" } ], + "C_SECONDARY_IN_FREQ": [ { "value": "100.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_SECONDARY_IN_TIMEPERIOD": [ { "value": "10.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_FEEDBACK_SOURCE": [ { "value": "FDBK_AUTO", "resolve_type": "generated", "usage": "all" } ], + "C_PRIM_SOURCE": [ { "value": "Single_ended_clock_capable_pin", "resolve_type": "generated", "usage": "all" } ], + "C_PHASESHIFT_MODE": [ { "value": "WAVEFORM", "resolve_type": "generated", "usage": "all" } ], + "C_SECONDARY_SOURCE": [ { "value": "Single_ended_clock_capable_pin", "resolve_type": "generated", "usage": "all" } ], + "C_CLKFB_IN_SIGNALING": [ { "value": "SINGLE", "resolve_type": "generated", "usage": "all" } ], + "C_USE_RESET": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_RESET_LOW": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_USE_LOCKED": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_USE_INCLK_STOPPED": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_USE_CLKFB_STOPPED": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_USE_POWER_DOWN": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_USE_STATUS": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_USE_FREEZE": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_NUM_OUT_CLKS": [ { "value": "4", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_CLKOUT1_DRIVES": [ { "value": "BUFG", "resolve_type": "generated", "usage": "all" } ], + "C_CLKOUT2_DRIVES": [ { "value": "BUFG", "resolve_type": "generated", "usage": "all" } ], + "C_CLKOUT3_DRIVES": [ { "value": "BUFG", "resolve_type": "generated", "usage": "all" } ], + "C_CLKOUT4_DRIVES": [ { "value": "BUFG", "resolve_type": "generated", "usage": "all" } ], + "C_CLKOUT5_DRIVES": [ { "value": "BUFG", "resolve_type": "generated", "usage": "all" } ], + "C_CLKOUT6_DRIVES": [ { "value": "BUFG", "resolve_type": "generated", "usage": "all" } ], + "C_CLKOUT7_DRIVES": [ { "value": "BUFG", "resolve_type": "generated", "usage": "all" } ], + "C_INCLK_SUM_ROW0": [ { "value": "Input Clock Freq (MHz) Input Jitter (UI)", "resolve_type": "generated", "usage": "all" } ], + "C_INCLK_SUM_ROW1": [ { "value": "__primary_________100.000____________0.010", "resolve_type": "generated", "usage": "all" } ], + "C_INCLK_SUM_ROW2": [ { "value": "no_secondary_input_clock ", "resolve_type": "generated", "usage": "all" } ], + "C_OUTCLK_SUM_ROW0A": [ { "value": " Output Output Phase Duty Cycle Pk-to-Pk Phase", "resolve_type": "generated", "usage": "all" } ], + "C_OUTCLK_SUM_ROW0B": [ { "value": " Clock Freq (MHz) (degrees) (%) Jitter (ps) Error (ps)", "resolve_type": "generated", "usage": "all" } ], + "C_OUTCLK_SUM_ROW1": [ { "value": "clk_out1__100.00000______0.000______50.0______151.366____132.063", "resolve_type": "generated", "usage": "all" } ], + "C_OUTCLK_SUM_ROW2": [ { "value": "clk_out2__200.00000______0.000______50.0______132.221____132.063", "resolve_type": "generated", "usage": "all" } ], + "C_OUTCLK_SUM_ROW3": [ { "value": "clk_out3__12.00000______0.000______50.0______231.952____132.063", "resolve_type": "generated", "usage": "all" } ], + "C_OUTCLK_SUM_ROW4": [ { "value": "clk_out4__50.00000______0.000______50.0______174.353____132.063", "resolve_type": "generated", "usage": "all" } ], + "C_OUTCLK_SUM_ROW5": [ { "value": "no_CLK_OUT5_output", "resolve_type": "generated", "usage": "all" } ], + "C_OUTCLK_SUM_ROW6": [ { "value": "no_CLK_OUT6_output", "resolve_type": "generated", "usage": "all" } ], + "C_OUTCLK_SUM_ROW7": [ { "value": "no_CLK_OUT7_output", "resolve_type": "generated", "usage": "all" } ], + "C_CLKOUT1_REQUESTED_OUT_FREQ": [ { "value": "100.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT2_REQUESTED_OUT_FREQ": [ { "value": "200.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT3_REQUESTED_OUT_FREQ": [ { "value": "12.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT4_REQUESTED_OUT_FREQ": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT5_REQUESTED_OUT_FREQ": [ { "value": "100.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT6_REQUESTED_OUT_FREQ": [ { "value": "100.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT7_REQUESTED_OUT_FREQ": [ { "value": "100.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT1_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT2_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT3_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT4_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT5_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT6_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT7_REQUESTED_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT1_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT2_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT3_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT4_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT5_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT6_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT7_REQUESTED_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT1_OUT_FREQ": [ { "value": "100.00000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT2_OUT_FREQ": [ { "value": "200.00000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT3_OUT_FREQ": [ { "value": "12.00000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT4_OUT_FREQ": [ { "value": "50.00000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT5_OUT_FREQ": [ { "value": "100.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT6_OUT_FREQ": [ { "value": "100.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT7_OUT_FREQ": [ { "value": "100.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT1_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT2_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT3_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT4_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT5_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT6_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT7_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT1_DUTY_CYCLE": [ { "value": "50.0", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT2_DUTY_CYCLE": [ { "value": "50.0", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT3_DUTY_CYCLE": [ { "value": "50.0", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT4_DUTY_CYCLE": [ { "value": "50.0", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT5_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT6_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKOUT7_DUTY_CYCLE": [ { "value": "50.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_USE_SAFE_CLOCK_STARTUP": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_USE_CLOCK_SEQUENCING": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_CLKOUT1_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_CLKOUT2_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_CLKOUT3_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_CLKOUT4_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_CLKOUT5_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_CLKOUT6_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_CLKOUT7_SEQUENCE_NUMBER": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_MMCM_NOTES": [ { "value": "None", "resolve_type": "generated", "usage": "all" } ], + "C_MMCM_BANDWIDTH": [ { "value": "OPTIMIZED", "resolve_type": "generated", "usage": "all" } ], + "C_MMCM_CLKFBOUT_MULT_F": [ { "value": "6.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_MMCM_CLKIN1_PERIOD": [ { "value": "10.0", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_MMCM_CLKIN2_PERIOD": [ { "value": "10.0", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_MMCM_CLKOUT4_CASCADE": [ { "value": "FALSE", "resolve_type": "generated", "format": "bool", "usage": "all" } ], + "C_MMCM_CLOCK_HOLD": [ { "value": "FALSE", "resolve_type": "generated", "format": "bool", "usage": "all" } ], + "C_MMCM_COMPENSATION": [ { "value": "ZHOLD", "resolve_type": "generated", "usage": "all" } ], + "C_MMCM_DIVCLK_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_MMCM_REF_JITTER1": [ { "value": "0.010", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_MMCM_REF_JITTER2": [ { "value": "0.010", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_MMCM_STARTUP_WAIT": [ { "value": "FALSE", "resolve_type": "generated", "usage": "all" } ], + "C_MMCM_CLKOUT0_DIVIDE_F": [ { "value": "6.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_MMCM_CLKOUT1_DIVIDE": [ { "value": "3", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_MMCM_CLKOUT2_DIVIDE": [ { "value": "50", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_MMCM_CLKOUT3_DIVIDE": [ { "value": "12", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_MMCM_CLKOUT4_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_MMCM_CLKOUT5_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_MMCM_CLKOUT6_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_MMCM_CLKOUT0_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_MMCM_CLKOUT1_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_MMCM_CLKOUT2_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_MMCM_CLKOUT3_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_MMCM_CLKOUT4_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_MMCM_CLKOUT5_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_MMCM_CLKOUT6_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_MMCM_CLKFBOUT_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_MMCM_CLKOUT0_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_MMCM_CLKOUT1_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_MMCM_CLKOUT2_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_MMCM_CLKOUT3_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_MMCM_CLKOUT4_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_MMCM_CLKOUT5_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_MMCM_CLKOUT6_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_MMCM_CLKFBOUT_USE_FINE_PS": [ { "value": "FALSE", "resolve_type": "generated", "usage": "all" } ], + "C_MMCM_CLKOUT0_USE_FINE_PS": [ { "value": "FALSE", "resolve_type": "generated", "usage": "all" } ], + "C_MMCM_CLKOUT1_USE_FINE_PS": [ { "value": "FALSE", "resolve_type": "generated", "usage": "all" } ], + "C_MMCM_CLKOUT2_USE_FINE_PS": [ { "value": "FALSE", "resolve_type": "generated", "usage": "all" } ], + "C_MMCM_CLKOUT3_USE_FINE_PS": [ { "value": "FALSE", "resolve_type": "generated", "usage": "all" } ], + "C_MMCM_CLKOUT4_USE_FINE_PS": [ { "value": "FALSE", "resolve_type": "generated", "usage": "all" } ], + "C_MMCM_CLKOUT5_USE_FINE_PS": [ { "value": "FALSE", "resolve_type": "generated", "usage": "all" } ], + "C_MMCM_CLKOUT6_USE_FINE_PS": [ { "value": "FALSE", "resolve_type": "generated", "usage": "all" } ], + "C_PLL_NOTES": [ { "value": "No notes", "resolve_type": "generated", "usage": "all" } ], + "C_PLL_BANDWIDTH": [ { "value": "OPTIMIZED", "resolve_type": "generated", "usage": "all" } ], + "C_PLL_CLK_FEEDBACK": [ { "value": "CLKFBOUT", "resolve_type": "generated", "usage": "all" } ], + "C_PLL_CLKFBOUT_MULT": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_PLL_CLKIN_PERIOD": [ { "value": "1.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_PLL_COMPENSATION": [ { "value": "SYSTEM_SYNCHRONOUS", "resolve_type": "generated", "usage": "all" } ], + "C_PLL_DIVCLK_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_PLL_REF_JITTER": [ { "value": "0.010", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_PLL_CLKOUT0_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_PLL_CLKOUT1_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_PLL_CLKOUT2_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_PLL_CLKOUT3_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_PLL_CLKOUT4_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_PLL_CLKOUT5_DIVIDE": [ { "value": "1", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_PLL_CLKOUT0_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_PLL_CLKOUT1_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_PLL_CLKOUT2_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_PLL_CLKOUT3_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_PLL_CLKOUT4_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_PLL_CLKOUT5_DUTY_CYCLE": [ { "value": "0.500", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_PLL_CLKFBOUT_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_PLL_CLKOUT0_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_PLL_CLKOUT1_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_PLL_CLKOUT2_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_PLL_CLKOUT3_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_PLL_CLKOUT4_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_PLL_CLKOUT5_PHASE": [ { "value": "0.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLOCK_MGR_TYPE": [ { "value": "NA", "resolve_type": "generated", "usage": "all" } ], + "C_OVERRIDE_MMCM": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_OVERRIDE_PLL": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_PRIMARY_PORT": [ { "value": "clk_in1", "resolve_type": "generated", "usage": "all" } ], + "C_SECONDARY_PORT": [ { "value": "clk_in2", "resolve_type": "generated", "usage": "all" } ], + "C_CLK_OUT1_PORT": [ { "value": "clk_out1", "resolve_type": "generated", "usage": "all" } ], + "C_CLK_OUT2_PORT": [ { "value": "clk_out2", "resolve_type": "generated", "usage": "all" } ], + "C_CLK_OUT3_PORT": [ { "value": "clk_out3", "resolve_type": "generated", "usage": "all" } ], + "C_CLK_OUT4_PORT": [ { "value": "clk_out4", "resolve_type": "generated", "usage": "all" } ], + "C_CLK_OUT5_PORT": [ { "value": "clk_out5", "resolve_type": "generated", "usage": "all" } ], + "C_CLK_OUT6_PORT": [ { "value": "clk_out6", "resolve_type": "generated", "usage": "all" } ], + "C_CLK_OUT7_PORT": [ { "value": "clk_out7", "resolve_type": "generated", "usage": "all" } ], + "C_RESET_PORT": [ { "value": "reset", "resolve_type": "generated", "usage": "all" } ], + "C_LOCKED_PORT": [ { "value": "locked", "resolve_type": "generated", "usage": "all" } ], + "C_CLKFB_IN_PORT": [ { "value": "clkfb_in", "resolve_type": "generated", "usage": "all" } ], + "C_CLKFB_IN_P_PORT": [ { "value": "clkfb_in_p", "resolve_type": "generated", "usage": "all" } ], + "C_CLKFB_IN_N_PORT": [ { "value": "clkfb_in_n", "resolve_type": "generated", "usage": "all" } ], + "C_CLKFB_OUT_PORT": [ { "value": "clkfb_out", "resolve_type": "generated", "usage": "all" } ], + "C_CLKFB_OUT_P_PORT": [ { "value": "clkfb_out_p", "resolve_type": "generated", "usage": "all" } ], + "C_CLKFB_OUT_N_PORT": [ { "value": "clkfb_out_n", "resolve_type": "generated", "usage": "all" } ], + "C_POWER_DOWN_PORT": [ { "value": "power_down", "resolve_type": "generated", "usage": "all" } ], + "C_DADDR_PORT": [ { "value": "daddr", "resolve_type": "generated", "usage": "all" } ], + "C_DCLK_PORT": [ { "value": "dclk", "resolve_type": "generated", "usage": "all" } ], + "C_DRDY_PORT": [ { "value": "drdy", "resolve_type": "generated", "usage": "all" } ], + "C_DWE_PORT": [ { "value": "dwe", "resolve_type": "generated", "usage": "all" } ], + "C_DIN_PORT": [ { "value": "din", "resolve_type": "generated", "usage": "all" } ], + "C_DOUT_PORT": [ { "value": "dout", "resolve_type": "generated", "usage": "all" } ], + "C_DEN_PORT": [ { "value": "den", "resolve_type": "generated", "usage": "all" } ], + "C_PSCLK_PORT": [ { "value": "psclk", "resolve_type": "generated", "usage": "all" } ], + "C_PSEN_PORT": [ { "value": "psen", "resolve_type": "generated", "usage": "all" } ], + "C_PSINCDEC_PORT": [ { "value": "psincdec", "resolve_type": "generated", "usage": "all" } ], + "C_PSDONE_PORT": [ { "value": "psdone", "resolve_type": "generated", "usage": "all" } ], + "C_CLK_VALID_PORT": [ { "value": "CLK_VALID", "resolve_type": "generated", "usage": "all" } ], + "C_STATUS_PORT": [ { "value": "STATUS", "resolve_type": "generated", "usage": "all" } ], + "C_CLK_IN_SEL_PORT": [ { "value": "clk_in_sel", "resolve_type": "generated", "usage": "all" } ], + "C_INPUT_CLK_STOPPED_PORT": [ { "value": "input_clk_stopped", "resolve_type": "generated", "usage": "all" } ], + "C_CLKFB_STOPPED_PORT": [ { "value": "clkfb_stopped", "resolve_type": "generated", "usage": "all" } ], + "C_CLKIN1_JITTER_PS": [ { "value": "100.0", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_CLKIN2_JITTER_PS": [ { "value": "100.0", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_PRIMITIVE": [ { "value": "MMCM", "resolve_type": "generated", "usage": "all" } ], + "C_SS_MODE": [ { "value": "CENTER_HIGH", "resolve_type": "generated", "usage": "all" } ], + "C_SS_MOD_PERIOD": [ { "value": "4000", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_SS_MOD_TIME": [ { "value": "0.004", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_HAS_CDDC": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_CDDCDONE_PORT": [ { "value": "cddcdone", "resolve_type": "generated", "usage": "all" } ], + "C_CDDCREQ_PORT": [ { "value": "cddcreq", "resolve_type": "generated", "usage": "all" } ], + "C_CLKOUTPHY_MODE": [ { "value": "VCO", "resolve_type": "generated", "usage": "all" } ], + "C_ENABLE_CLKOUTPHY": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_INTERFACE_SELECTION": [ { "value": "0", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_S_AXI_ADDR_WIDTH": [ { "value": "11", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_S_AXI_DATA_WIDTH": [ { "value": "32", "resolve_type": "generated", "format": "long", "usage": "all" } ], + "C_POWER_REG": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ], + "C_CLKOUT0_1": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ], + "C_CLKOUT0_2": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ], + "C_CLKOUT1_1": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ], + "C_CLKOUT1_2": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ], + "C_CLKOUT2_1": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ], + "C_CLKOUT2_2": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ], + "C_CLKOUT3_1": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ], + "C_CLKOUT3_2": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ], + "C_CLKOUT4_1": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ], + "C_CLKOUT4_2": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ], + "C_CLKOUT5_1": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ], + "C_CLKOUT5_2": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ], + "C_CLKOUT6_1": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ], + "C_CLKOUT6_2": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ], + "C_CLKFBOUT_1": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ], + "C_CLKFBOUT_2": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ], + "C_DIVCLK": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ], + "C_LOCK_1": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ], + "C_LOCK_2": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ], + "C_LOCK_3": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ], + "C_FILTER_1": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ], + "C_FILTER_2": [ { "value": "0000", "resolve_type": "generated", "usage": "all" } ], + "C_DIVIDE1_AUTO": [ { "value": "1", "resolve_type": "generated", "usage": "all" } ], + "C_DIVIDE2_AUTO": [ { "value": "0.5", "resolve_type": "generated", "usage": "all" } ], + "C_DIVIDE3_AUTO": [ { "value": "8.333333333333334", "resolve_type": "generated", "usage": "all" } ], + "C_DIVIDE4_AUTO": [ { "value": "2.0", "resolve_type": "generated", "usage": "all" } ], + "C_DIVIDE5_AUTO": [ { "value": "0.16666666666666666", "resolve_type": "generated", "usage": "all" } ], + "C_DIVIDE6_AUTO": [ { "value": "0.16666666666666666", "resolve_type": "generated", "usage": "all" } ], + "C_DIVIDE7_AUTO": [ { "value": "0.16666666666666666", "resolve_type": "generated", "usage": "all" } ], + "C_PLLBUFGCEDIV": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ], + "C_MMCMBUFGCEDIV": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ], + "C_PLLBUFGCEDIV1": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ], + "C_PLLBUFGCEDIV2": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ], + "C_PLLBUFGCEDIV3": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ], + "C_PLLBUFGCEDIV4": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ], + "C_MMCMBUFGCEDIV1": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ], + "C_MMCMBUFGCEDIV2": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ], + "C_MMCMBUFGCEDIV3": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ], + "C_MMCMBUFGCEDIV4": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ], + "C_MMCMBUFGCEDIV5": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ], + "C_MMCMBUFGCEDIV6": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ], + "C_MMCMBUFGCEDIV7": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ], + "C_CLKOUT1_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ], + "C_CLKOUT2_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ], + "C_CLKOUT3_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ], + "C_CLKOUT4_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ], + "C_CLKOUT5_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ], + "C_CLKOUT6_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ], + "C_CLKOUT7_MATCHED_ROUTING": [ { "value": "false", "resolve_type": "generated", "usage": "all" } ], + "C_CLKOUT0_ACTUAL_FREQ": [ { "value": "100.00000", "resolve_type": "generated", "usage": "all" } ], + "C_CLKOUT1_ACTUAL_FREQ": [ { "value": "200.00000", "resolve_type": "generated", "usage": "all" } ], + "C_CLKOUT2_ACTUAL_FREQ": [ { "value": "12.00000", "resolve_type": "generated", "usage": "all" } ], + "C_CLKOUT3_ACTUAL_FREQ": [ { "value": "50.00000", "resolve_type": "generated", "usage": "all" } ], + "C_CLKOUT4_ACTUAL_FREQ": [ { "value": "100.000", "resolve_type": "generated", "usage": "all" } ], + "C_CLKOUT5_ACTUAL_FREQ": [ { "value": "100.000", "resolve_type": "generated", "usage": "all" } ], + "C_CLKOUT6_ACTUAL_FREQ": [ { "value": "100.000", "resolve_type": "generated", "usage": "all" } ], + "C_M_MAX": [ { "value": "64.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_M_MIN": [ { "value": "2.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_D_MAX": [ { "value": "80.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_D_MIN": [ { "value": "1.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_O_MAX": [ { "value": "128.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_O_MIN": [ { "value": "1.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_VCO_MIN": [ { "value": "600.000", "resolve_type": "generated", "format": "float", "usage": "all" } ], + "C_VCO_MAX": [ { "value": "1200.000", "resolve_type": "generated", "format": "float", "usage": "all" } ] + }, + "project_parameters": { + "ARCHITECTURE": [ { "value": "artix7" } ], + "BASE_BOARD_PART": [ { "value": "" } ], + "BOARD_CONNECTIONS": [ { "value": "" } ], + "DEVICE": [ { "value": "xc7a200t" } ], + "NEXTGEN_VERSAL": [ { "value": "0" } ], + "PACKAGE": [ { "value": "sbg484" } ], + "PREFHDL": [ { "value": "VHDL" } ], + "SILICON_REVISION": [ { "value": "" } ], + "SIMULATOR_LANGUAGE": [ { "value": "MIXED" } ], + "SPEEDGRADE": [ { "value": "-1" } ], + "STATIC_POWER": [ { "value": "" } ], + "TEMPERATURE_GRADE": [ { "value": "" } ] + }, + "runtime_parameters": { + "IPCONTEXT": [ { "value": "IP_Flow" } ], + "IPREVISION": [ { "value": "14" } ], + "MANAGED": [ { "value": "TRUE" } ], + "OUTPUTDIR": [ { "value": "." } ], + "SELECTEDSIMMODEL": [ { "value": "" } ], + "SHAREDDIR": [ { "value": "." } ], + "SWVERSION": [ { "value": "2024.1" } ], + "SYNTHESISFLOW": [ { "value": "OUT_OF_CONTEXT" } ] + } + }, + "boundary": { + "ports": { + "reset": [ { "direction": "in", "driver_value": "0" } ], + "clk_in1": [ { "direction": "in" } ], + "clk_out1": [ { "direction": "out" } ], + "clk_out2": [ { "direction": "out" } ], + "clk_out3": [ { "direction": "out" } ], + "clk_out4": [ { "direction": "out" } ], + "locked": [ { "direction": "out" } ] + }, + "interfaces": { + "reset": { + "vlnv": "xilinx.com:signal:reset:1.0", + "abstraction_type": "xilinx.com:signal:reset_rtl:1.0", + "mode": "slave", + "parameters": { + "POLARITY": [ { "value": "ACTIVE_HIGH", "value_src": "constant", "usage": "all" } ], + "BOARD.ASSOCIATED_PARAM": [ { "value": "RESET_BOARD_INTERFACE", "value_src": "constant", "usage": "all" } ], + "INSERT_VIP": [ { "value": "0", "resolve_type": "user", "format": "long", "usage": "simulation.rtl", "is_ips_inferred": true, "is_static_object": false } ] + }, + "port_maps": { + "RST": [ { "physical_name": "reset" } ] + } + }, + "clock_CLK_IN1": { + "vlnv": "xilinx.com:signal:clock:1.0", + "abstraction_type": "xilinx.com:signal:clock_rtl:1.0", + "mode": "slave", + "parameters": { + "FREQ_HZ": [ { "value": "100000000", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ], + "FREQ_TOLERANCE_HZ": [ { "value": "0", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ], + "PHASE": [ { "value": "0.0", "resolve_type": "generated", "format": "float", "is_ips_inferred": true, "is_static_object": false } ], + "CLK_DOMAIN": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ], + "ASSOCIATED_BUSIF": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ], + "ASSOCIATED_PORT": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ], + "ASSOCIATED_RESET": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ], + "INSERT_VIP": [ { "value": "0", "resolve_type": "user", "format": "long", "usage": "simulation.rtl", "is_ips_inferred": true, "is_static_object": false } ], + "BOARD.ASSOCIATED_PARAM": [ { "value": "CLK_IN1_BOARD_INTERFACE", "usage": "all", "is_static_object": false } ] + }, + "port_maps": { + "CLK_IN1": [ { "physical_name": "clk_in1" } ] + } + }, + "clock_CLK_OUT1": { + "vlnv": "xilinx.com:signal:clock:1.0", + "abstraction_type": "xilinx.com:signal:clock_rtl:1.0", + "mode": "master", + "parameters": { + "FREQ_HZ": [ { "value": "100000000", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ], + "FREQ_TOLERANCE_HZ": [ { "value": "0", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ], + "PHASE": [ { "value": "0.0", "resolve_type": "generated", "format": "float", "is_ips_inferred": true, "is_static_object": false } ], + "CLK_DOMAIN": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ], + "ASSOCIATED_BUSIF": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ], + "ASSOCIATED_PORT": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ], + "ASSOCIATED_RESET": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ], + "INSERT_VIP": [ { "value": "0", "resolve_type": "user", "format": "long", "usage": "simulation.rtl", "is_ips_inferred": true, "is_static_object": false } ] + }, + "port_maps": { + "CLK_OUT1": [ { "physical_name": "clk_out1" } ] + } + }, + "clock_CLK_OUT2": { + "vlnv": "xilinx.com:signal:clock:1.0", + "abstraction_type": "xilinx.com:signal:clock_rtl:1.0", + "mode": "master", + "parameters": { + "FREQ_HZ": [ { "value": "100000000", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ], + "FREQ_TOLERANCE_HZ": [ { "value": "0", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ], + "PHASE": [ { "value": "0.0", "resolve_type": "generated", "format": "float", "is_ips_inferred": true, "is_static_object": false } ], + "CLK_DOMAIN": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ], + "ASSOCIATED_BUSIF": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ], + "ASSOCIATED_PORT": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ], + "ASSOCIATED_RESET": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ], + "INSERT_VIP": [ { "value": "0", "resolve_type": "user", "format": "long", "usage": "simulation.rtl", "is_ips_inferred": true, "is_static_object": false } ] + }, + "port_maps": { + "CLK_OUT2": [ { "physical_name": "clk_out2" } ] + } + }, + "clock_CLK_OUT3": { + "vlnv": "xilinx.com:signal:clock:1.0", + "abstraction_type": "xilinx.com:signal:clock_rtl:1.0", + "mode": "master", + "parameters": { + "FREQ_HZ": [ { "value": "100000000", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ], + "FREQ_TOLERANCE_HZ": [ { "value": "0", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ], + "PHASE": [ { "value": "0.0", "resolve_type": "generated", "format": "float", "is_ips_inferred": true, "is_static_object": false } ], + "CLK_DOMAIN": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ], + "ASSOCIATED_BUSIF": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ], + "ASSOCIATED_PORT": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ], + "ASSOCIATED_RESET": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ], + "INSERT_VIP": [ { "value": "0", "resolve_type": "user", "format": "long", "usage": "simulation.rtl", "is_ips_inferred": true, "is_static_object": false } ] + }, + "port_maps": { + "CLK_OUT3": [ { "physical_name": "clk_out3" } ] + } + }, + "clock_CLK_OUT4": { + "vlnv": "xilinx.com:signal:clock:1.0", + "abstraction_type": "xilinx.com:signal:clock_rtl:1.0", + "mode": "master", + "parameters": { + "FREQ_HZ": [ { "value": "100000000", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ], + "FREQ_TOLERANCE_HZ": [ { "value": "0", "resolve_type": "generated", "format": "long", "is_ips_inferred": true, "is_static_object": false } ], + "PHASE": [ { "value": "0.0", "resolve_type": "generated", "format": "float", "is_ips_inferred": true, "is_static_object": false } ], + "CLK_DOMAIN": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ], + "ASSOCIATED_BUSIF": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ], + "ASSOCIATED_PORT": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ], + "ASSOCIATED_RESET": [ { "value": "", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ], + "INSERT_VIP": [ { "value": "0", "resolve_type": "user", "format": "long", "usage": "simulation.rtl", "is_ips_inferred": true, "is_static_object": false } ] + }, + "port_maps": { + "CLK_OUT4": [ { "physical_name": "clk_out4" } ] + } + } + } + } + } +} \ No newline at end of file diff --git a/src/ip/clk_wiz_0/clk_wiz_0.xdc b/src/ip/clk_wiz_0/clk_wiz_0.xdc index 420a6de..b41c9c9 100644 --- a/src/ip/clk_wiz_0/clk_wiz_0.xdc +++ b/src/ip/clk_wiz_0/clk_wiz_0.xdc @@ -1,23 +1,22 @@ + # file: clk_wiz_0.xdc -# -# (c) Copyright 2008 - 2013 Xilinx, Inc. All rights reserved. -# +# (c) Copyright 2017-2018, 2023 Advanced Micro Devices, Inc. All rights reserved. +# # This file contains confidential and proprietary information -# of Xilinx, Inc. and is protected under U.S. and -# international copyright and other intellectual property -# laws. -# +# of AMD and is protected under U.S. and international copyright +# and other intellectual property laws. +# # DISCLAIMER # This disclaimer is not a license and does not grant any # rights to the materials distributed herewith. Except as # otherwise provided in a valid license issued to you by -# Xilinx, and to the maximum extent permitted by applicable +# AMD, and to the maximum extent permitted by applicable # law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND -# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# WITH ALL FAULTS, AND AMD HEREBY DISCLAIMS ALL WARRANTIES # AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING # BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- # INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and -# (2) Xilinx shall not be liable (whether in contract or tort, +# (2) AMD shall not be liable (whether in contract or tort, # including negligence, or under any other theory of # liability) for any loss or damage of any kind or nature # related to, arising under or in connection with these @@ -26,11 +25,11 @@ # (including loss of data, profits, goodwill, or any type of # loss or damage suffered as a result of any action brought # by a third party) even if such damage or loss was -# reasonably foreseeable or Xilinx had been advised of the +# reasonably foreseeable or AMD had been advised of the # possibility of the same. -# +# # CRITICAL APPLICATIONS -# Xilinx products are not designed or intended to be fail- +# AMD products are not designed or intended to be fail- # safe, or for use in any application requiring fail-safe # performance, such as life-support or safety devices or # systems, Class III medical devices, nuclear facilities, @@ -39,13 +38,12 @@ # injury, or severe property or environmental damage # (individually and collectively, "Critical # Applications"). Customer assumes the sole risk and -# liability of any use of Xilinx products in Critical +# liability of any use of AMD products in Critical # Applications, subject only to applicable laws and # regulations governing limitations on product liability. -# +# # THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS # PART OF THIS FILE AT ALL TIMES. -# # Input clock periods. These duplicate the values entered for the # input clocks. You can use these to time your system. If required @@ -53,7 +51,7 @@ #---------------------------------------------------------------- # Connect to input port when clock capable pin is selected for input create_clock -period 10.0 [get_ports clk_in1] -set_input_jitter [get_clocks -of_objects [get_ports clk_in1]] 0.10000000000000001 - +set_input_jitter [get_clocks -of_objects [get_ports clk_in1]] 0.100 +set_property PHASESHIFT_MODE WAVEFORM [get_cells -hierarchical *adv*] diff --git a/src/ip/clk_wiz_0/clk_wiz_0.xml b/src/ip/clk_wiz_0/clk_wiz_0.xml index 66fd124..50ae032 100644 --- a/src/ip/clk_wiz_0/clk_wiz_0.xml +++ b/src/ip/clk_wiz_0/clk_wiz_0.xml @@ -149,6 +149,287 @@ </spirit:physicalPort> </spirit:portMap> </spirit:portMaps> + <spirit:parameters> + <spirit:parameter> + <spirit:name>DATA_WIDTH</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.S_AXI_LITE.DATA_WIDTH">1</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>PROTOCOL</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.S_AXI_LITE.PROTOCOL">AXI4LITE</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>FREQ_HZ</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.S_AXI_LITE.FREQ_HZ">100000000</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>ID_WIDTH</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.S_AXI_LITE.ID_WIDTH">0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>ADDR_WIDTH</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.S_AXI_LITE.ADDR_WIDTH">1</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>AWUSER_WIDTH</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.S_AXI_LITE.AWUSER_WIDTH">0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>ARUSER_WIDTH</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.S_AXI_LITE.ARUSER_WIDTH">0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>WUSER_WIDTH</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.S_AXI_LITE.WUSER_WIDTH">0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>RUSER_WIDTH</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.S_AXI_LITE.RUSER_WIDTH">0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>BUSER_WIDTH</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.S_AXI_LITE.BUSER_WIDTH">0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>READ_WRITE_MODE</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.S_AXI_LITE.READ_WRITE_MODE">READ_WRITE</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>HAS_BURST</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.S_AXI_LITE.HAS_BURST">0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>HAS_LOCK</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.S_AXI_LITE.HAS_LOCK">0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>HAS_PROT</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.S_AXI_LITE.HAS_PROT">0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>HAS_CACHE</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.S_AXI_LITE.HAS_CACHE">0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>HAS_QOS</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.S_AXI_LITE.HAS_QOS">0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>HAS_REGION</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.S_AXI_LITE.HAS_REGION">0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>HAS_WSTRB</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.S_AXI_LITE.HAS_WSTRB">0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>HAS_BRESP</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.S_AXI_LITE.HAS_BRESP">0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>HAS_RRESP</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.S_AXI_LITE.HAS_RRESP">0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>SUPPORTS_NARROW_BURST</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.S_AXI_LITE.SUPPORTS_NARROW_BURST">0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>NUM_READ_OUTSTANDING</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.S_AXI_LITE.NUM_READ_OUTSTANDING">1</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>NUM_WRITE_OUTSTANDING</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.S_AXI_LITE.NUM_WRITE_OUTSTANDING">1</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>MAX_BURST_LENGTH</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.S_AXI_LITE.MAX_BURST_LENGTH">1</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>PHASE</spirit:name> + <spirit:value spirit:format="float" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.S_AXI_LITE.PHASE">0.0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>CLK_DOMAIN</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.S_AXI_LITE.CLK_DOMAIN"/> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>NUM_READ_THREADS</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.S_AXI_LITE.NUM_READ_THREADS">1</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>NUM_WRITE_THREADS</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.S_AXI_LITE.NUM_WRITE_THREADS">1</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>RUSER_BITS_PER_BYTE</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.S_AXI_LITE.RUSER_BITS_PER_BYTE">0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>WUSER_BITS_PER_BYTE</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.S_AXI_LITE.WUSER_BITS_PER_BYTE">0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>INSERT_VIP</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="user" spirit:id="BUSIFPARAM_VALUE.S_AXI_LITE.INSERT_VIP">0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>simulation.rtl</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + </spirit:parameters> <spirit:vendorExtensions> <xilinx:busInterfaceInfo> <xilinx:enablement> @@ -180,7 +461,61 @@ </spirit:parameter> <spirit:parameter> <spirit:name>ASSOCIATED_RESET</spirit:name> - <spirit:value spirit:id="BUSIFPARAM_VALUE.S_AXI_ACLK.ASSOCIATED_RESET">aresetn</spirit:value> + <spirit:value spirit:id="BUSIFPARAM_VALUE.S_AXI_ACLK.ASSOCIATED_RESET">s_axi_aresetn</spirit:value> + </spirit:parameter> + <spirit:parameter> + <spirit:name>FREQ_HZ</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.S_AXI_ACLK.FREQ_HZ">100000000</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>FREQ_TOLERANCE_HZ</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.S_AXI_ACLK.FREQ_TOLERANCE_HZ">0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>PHASE</spirit:name> + <spirit:value spirit:format="float" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.S_AXI_ACLK.PHASE">0.0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>CLK_DOMAIN</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.S_AXI_ACLK.CLK_DOMAIN"/> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>ASSOCIATED_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.S_AXI_ACLK.ASSOCIATED_PORT"/> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>INSERT_VIP</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="user" spirit:id="BUSIFPARAM_VALUE.S_AXI_ACLK.INSERT_VIP">0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>simulation.rtl</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> </spirit:parameter> </spirit:parameters> <spirit:vendorExtensions> @@ -192,87 +527,173 @@ </spirit:vendorExtensions> </spirit:busInterface> <spirit:busInterface> - <spirit:name>s_axi_resetn</spirit:name> - <spirit:displayName>S_AXI_RESETN</spirit:displayName> - <spirit:busType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="reset" spirit:version="1.0"/> - <spirit:abstractionType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="reset_rtl" spirit:version="1.0"/> + <spirit:name>ref_clk</spirit:name> + <spirit:displayName>ref_clk</spirit:displayName> + <spirit:busType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="clock" spirit:version="1.0"/> + <spirit:abstractionType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="clock_rtl" spirit:version="1.0"/> <spirit:slave/> <spirit:portMaps> <spirit:portMap> <spirit:logicalPort> - <spirit:name>RST</spirit:name> + <spirit:name>CLK</spirit:name> </spirit:logicalPort> <spirit:physicalPort> - <spirit:name>s_axi_aresetn</spirit:name> + <spirit:name>ref_clk</spirit:name> </spirit:physicalPort> </spirit:portMap> </spirit:portMaps> <spirit:parameters> <spirit:parameter> - <spirit:name>ASSOCIATED_RESET</spirit:name> - <spirit:value spirit:id="BUSIFPARAM_VALUE.S_AXI_RESETN.ASSOCIATED_RESET">aresetn</spirit:value> + <spirit:name>FREQ_HZ</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.REF_CLK.FREQ_HZ">100000000</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> </spirit:parameter> <spirit:parameter> - <spirit:name>POLARITY</spirit:name> - <spirit:value spirit:id="BUSIFPARAM_VALUE.S_AXI_RESETN.POLARITY">ACTIVE_LOW</spirit:value> + <spirit:name>FREQ_TOLERANCE_HZ</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.REF_CLK.FREQ_TOLERANCE_HZ">0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> </spirit:parameter> - </spirit:parameters> - <spirit:vendorExtensions> - <xilinx:busInterfaceInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="BUSIF_ENABLEMENT.s_axi_resetn" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION'))">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:busInterfaceInfo> - </spirit:vendorExtensions> + <spirit:parameter> + <spirit:name>PHASE</spirit:name> + <spirit:value spirit:format="float" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.REF_CLK.PHASE">0.0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>CLK_DOMAIN</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.REF_CLK.CLK_DOMAIN"/> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>ASSOCIATED_BUSIF</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.REF_CLK.ASSOCIATED_BUSIF"/> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>ASSOCIATED_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.REF_CLK.ASSOCIATED_PORT"/> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>ASSOCIATED_RESET</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.REF_CLK.ASSOCIATED_RESET"/> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>INSERT_VIP</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="user" spirit:id="BUSIFPARAM_VALUE.REF_CLK.INSERT_VIP">0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>simulation.rtl</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + </spirit:parameters> + <spirit:vendorExtensions> + <xilinx:busInterfaceInfo> + <xilinx:enablement> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="BUSIF_ENABLEMENT.ref_clk" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_ENABLE_CLOCK_MONITOR'))">false</xilinx:isEnabled> + </xilinx:enablement> + </xilinx:busInterfaceInfo> + </spirit:vendorExtensions> </spirit:busInterface> <spirit:busInterface> - <spirit:name>intr</spirit:name> - <spirit:displayName>Intr</spirit:displayName> - <spirit:busType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="interrupt" spirit:version="1.0"/> - <spirit:abstractionType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="interrupt_rtl" spirit:version="1.0"/> - <spirit:master/> + <spirit:name>s_axi_resetn</spirit:name> + <spirit:displayName>S_AXI_RESETN</spirit:displayName> + <spirit:busType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="reset" spirit:version="1.0"/> + <spirit:abstractionType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="reset_rtl" spirit:version="1.0"/> + <spirit:slave/> <spirit:portMaps> <spirit:portMap> <spirit:logicalPort> - <spirit:name>INTERRUPT</spirit:name> + <spirit:name>RST</spirit:name> </spirit:logicalPort> <spirit:physicalPort> - <spirit:name>ip2intc_irpt</spirit:name> + <spirit:name>s_axi_aresetn</spirit:name> </spirit:physicalPort> </spirit:portMap> </spirit:portMaps> + <spirit:parameters> + <spirit:parameter> + <spirit:name>ASSOCIATED_RESET</spirit:name> + <spirit:value spirit:id="BUSIFPARAM_VALUE.S_AXI_RESETN.ASSOCIATED_RESET">aresetn</spirit:value> + </spirit:parameter> + <spirit:parameter> + <spirit:name>POLARITY</spirit:name> + <spirit:value spirit:id="BUSIFPARAM_VALUE.S_AXI_RESETN.POLARITY">ACTIVE_LOW</spirit:value> + </spirit:parameter> + <spirit:parameter> + <spirit:name>INSERT_VIP</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="user" spirit:id="BUSIFPARAM_VALUE.S_AXI_RESETN.INSERT_VIP">0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>simulation.rtl</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + </spirit:parameters> <spirit:vendorExtensions> <xilinx:busInterfaceInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="BUSIF_ENABLEMENT.intr" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION'))">false</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="BUSIF_ENABLEMENT.s_axi_resetn" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION'))">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:busInterfaceInfo> </spirit:vendorExtensions> </spirit:busInterface> <spirit:busInterface> - <spirit:name>clock_CLK_IN1</spirit:name> - <spirit:busType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="clock" spirit:version="1.0"/> - <spirit:abstractionType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="clock_rtl" spirit:version="1.0"/> - <spirit:slave/> + <spirit:name>intr</spirit:name> + <spirit:displayName>Intr</spirit:displayName> + <spirit:busType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="interrupt" spirit:version="1.0"/> + <spirit:abstractionType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="interrupt_rtl" spirit:version="1.0"/> + <spirit:master/> <spirit:portMaps> <spirit:portMap> <spirit:logicalPort> - <spirit:name>CLK</spirit:name> + <spirit:name>INTERRUPT</spirit:name> </spirit:logicalPort> <spirit:physicalPort> - <spirit:name>clk_in1</spirit:name> + <spirit:name>interrupt</spirit:name> </spirit:physicalPort> </spirit:portMap> </spirit:portMaps> <spirit:parameters> <spirit:parameter> - <spirit:name>BOARD.ASSOCIATED_PARAM</spirit:name> - <spirit:value spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_IN1.BOARD.ASSOCIATED_PARAM">CLK_IN1_BOARD_INTERFACE</spirit:value> + <spirit:name>SENSITIVITY</spirit:name> + <spirit:value spirit:id="BUSIFPARAM_VALUE.INTR.SENSITIVITY">EDGE_RISING</spirit:value> + </spirit:parameter> + <spirit:parameter> + <spirit:name>PortWidth</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.INTR.PortWidth">1</spirit:value> <spirit:vendorExtensions> <xilinx:parameterInfo> - <xilinx:enablement> - <xilinx:presence>required</xilinx:presence> - </xilinx:enablement> + <xilinx:parameterUsage>none</xilinx:parameterUsage> </xilinx:parameterInfo> </spirit:vendorExtensions> </spirit:parameter> @@ -280,7 +701,7 @@ <spirit:vendorExtensions> <xilinx:busInterfaceInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="BUSIF_ENABLEMENT.clock_CLK_IN1" xilinx:dependency="((spirit:decode(id('MODELPARAM_VALUE.C_PRIM_SOURCE'))="Single_ended_clock_capable_pin") or (spirit:decode(id('MODELPARAM_VALUE.C_PRIM_SOURCE'))="Single_ended_non_clock_pin") or (spirit:decode(id('MODELPARAM_VALUE.C_PRIM_SOURCE'))="No_buffer") or (spirit:decode(id('MODELPARAM_VALUE.C_PRIM_SOURCE'))="Global_buffer"))">true</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="BUSIF_ENABLEMENT.intr" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION'))">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:busInterfaceInfo> </spirit:vendorExtensions> @@ -322,39 +743,21 @@ </xilinx:parameterInfo> </spirit:vendorExtensions> </spirit:parameter> - </spirit:parameters> - <spirit:vendorExtensions> - <xilinx:busInterfaceInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="BUSIF_ENABLEMENT.CLK_IN1_D" xilinx:dependency="((spirit:decode(id('MODELPARAM_VALUE.C_PRIM_SOURCE'))="Differential_clock_capable_pin") or (spirit:decode(id('MODELPARAM_VALUE.C_PRIM_SOURCE'))="Differential_non_clock_pin"))">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:busInterfaceInfo> - </spirit:vendorExtensions> - </spirit:busInterface> - <spirit:busInterface> - <spirit:name>clock_CLK_IN2</spirit:name> - <spirit:busType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="clock" spirit:version="1.0"/> - <spirit:abstractionType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="clock_rtl" spirit:version="1.0"/> - <spirit:slave/> - <spirit:portMaps> - <spirit:portMap> - <spirit:logicalPort> - <spirit:name>CLK</spirit:name> - </spirit:logicalPort> - <spirit:physicalPort> - <spirit:name>clk_in2</spirit:name> - </spirit:physicalPort> - </spirit:portMap> - </spirit:portMaps> - <spirit:parameters> <spirit:parameter> - <spirit:name>BOARD.ASSOCIATED_PARAM</spirit:name> - <spirit:value spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_IN2.BOARD.ASSOCIATED_PARAM">CLK_IN2_BOARD_INTERFACE</spirit:value> + <spirit:name>CAN_DEBUG</spirit:name> + <spirit:value spirit:format="bool" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLK_IN1_D.CAN_DEBUG">false</spirit:value> <spirit:vendorExtensions> <xilinx:parameterInfo> - <xilinx:enablement> - <xilinx:presence>required</xilinx:presence> - </xilinx:enablement> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>FREQ_HZ</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLK_IN1_D.FREQ_HZ">100000000</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> </xilinx:parameterInfo> </spirit:vendorExtensions> </spirit:parameter> @@ -362,7 +765,7 @@ <spirit:vendorExtensions> <xilinx:busInterfaceInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="BUSIF_ENABLEMENT.clock_CLK_IN2" xilinx:dependency="(((spirit:decode(id('MODELPARAM_VALUE.C_SECONDARY_SOURCE'))="Single_ended_clock_capable_pin") or (spirit:decode(id('MODELPARAM_VALUE.C_SECONDARY_SOURCE'))="Single_ended_non_clock_pin") or (spirit:decode(id('MODELPARAM_VALUE.C_SECONDARY_SOURCE'))="No_buffer") or (spirit:decode(id('MODELPARAM_VALUE.C_SECONDARY_SOURCE'))="Global_buffer")) and (spirit:decode(id('MODELPARAM_VALUE.C_USE_INCLK_SWITCHOVER'))=1))">false</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="BUSIF_ENABLEMENT.CLK_IN1_D" xilinx:dependency="((spirit:decode(id('MODELPARAM_VALUE.C_PRIM_SOURCE'))="Differential_clock_capable_pin") or (spirit:decode(id('MODELPARAM_VALUE.C_PRIM_SOURCE'))="Differential_non_clock_pin"))">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:busInterfaceInfo> </spirit:vendorExtensions> @@ -404,6 +807,24 @@ </xilinx:parameterInfo> </spirit:vendorExtensions> </spirit:parameter> + <spirit:parameter> + <spirit:name>CAN_DEBUG</spirit:name> + <spirit:value spirit:format="bool" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLK_IN2_D.CAN_DEBUG">false</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>FREQ_HZ</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLK_IN2_D.FREQ_HZ">100000000</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> </spirit:parameters> <spirit:vendorExtensions> <xilinx:busInterfaceInfo> @@ -413,29 +834,6 @@ </xilinx:busInterfaceInfo> </spirit:vendorExtensions> </spirit:busInterface> - <spirit:busInterface> - <spirit:name>clock_CLKFB_IN</spirit:name> - <spirit:busType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="clock" spirit:version="1.0"/> - <spirit:abstractionType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="clock_rtl" spirit:version="1.0"/> - <spirit:slave/> - <spirit:portMaps> - <spirit:portMap> - <spirit:logicalPort> - <spirit:name>CLK</spirit:name> - </spirit:logicalPort> - <spirit:physicalPort> - <spirit:name>clkfb_in</spirit:name> - </spirit:physicalPort> - </spirit:portMap> - </spirit:portMaps> - <spirit:vendorExtensions> - <xilinx:busInterfaceInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="BUSIF_ENABLEMENT.clock_CLKFB_IN" xilinx:dependency="((((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and ((spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))!="FDBK_AUTO") or (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP"))) or ((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP"))) and ((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))!=1) or (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))!="FDBK_AUTO_OFFCHIP") or (spirit:decode(id('MODELPARAM_VALUE.C_CLKFB_IN_SIGNALING'))!="DIFF")))">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:busInterfaceInfo> - </spirit:vendorExtensions> - </spirit:busInterface> <spirit:busInterface> <spirit:name>CLKFB_IN_D</spirit:name> <spirit:displayName>CLKFB_IN_D</spirit:displayName> @@ -461,458 +859,665 @@ </spirit:physicalPort> </spirit:portMap> </spirit:portMaps> + <spirit:parameters> + <spirit:parameter> + <spirit:name>CAN_DEBUG</spirit:name> + <spirit:value spirit:format="bool" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLKFB_IN_D.CAN_DEBUG">false</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>FREQ_HZ</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLKFB_IN_D.FREQ_HZ">100000000</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + </spirit:parameters> <spirit:vendorExtensions> <xilinx:busInterfaceInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="BUSIF_ENABLEMENT.CLKFB_IN_D" xilinx:dependency="((((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and ((spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))!="FDBK_AUTO") or (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP"))) or ((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP"))) and ((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP") and (spirit:decode(id('MODELPARAM_VALUE.C_CLKFB_IN_SIGNALING'))="DIFF")))">false</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="BUSIF_ENABLEMENT.CLKFB_IN_D" xilinx:dependency="((((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and ((spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))!="FDBK_AUTO") or (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP"))) or ((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP")) and ((spirit:decode(id('MODELPARAM_VALUE.C_MMCM_COMPENSATION'))!="INTERNAL"))) and ((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP") and (spirit:decode(id('MODELPARAM_VALUE.C_CLKFB_IN_SIGNALING'))="DIFF") and ((spirit:decode(id('MODELPARAM_VALUE.C_MMCM_COMPENSATION'))!="INTERNAL"))))">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:busInterfaceInfo> </spirit:vendorExtensions> </spirit:busInterface> <spirit:busInterface> - <spirit:name>clock_CLK_OUT1</spirit:name> - <spirit:busType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="clock" spirit:version="1.0"/> - <spirit:abstractionType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="clock_rtl" spirit:version="1.0"/> + <spirit:name>CLKFB_OUT_D</spirit:name> + <spirit:displayName>CLKFB_OUT_D</spirit:displayName> + <spirit:description>Differential Feeback Clock Output</spirit:description> + <spirit:busType spirit:vendor="xilinx.com" spirit:library="interface" spirit:name="diff_clock" spirit:version="1.0"/> + <spirit:abstractionType spirit:vendor="xilinx.com" spirit:library="interface" spirit:name="diff_clock_rtl" spirit:version="1.0"/> <spirit:master/> <spirit:portMaps> <spirit:portMap> <spirit:logicalPort> - <spirit:name>CLK</spirit:name> + <spirit:name>CLK_N</spirit:name> </spirit:logicalPort> <spirit:physicalPort> - <spirit:name>clk_out1</spirit:name> + <spirit:name>clkfb_out_n</spirit:name> </spirit:physicalPort> </spirit:portMap> - </spirit:portMaps> - <spirit:parameters> - <spirit:parameter> - <spirit:name>FREQ_HZ</spirit:name> - <spirit:value spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT1.FREQ_HZ">100000000</spirit:value> - </spirit:parameter> - <spirit:parameter> - <spirit:name>ASSOCIATED_MMCM_LOCK</spirit:name> - <spirit:value spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT1.ASSOCIATED_MMCM_LOCK">locked</spirit:value> - </spirit:parameter> - </spirit:parameters> - </spirit:busInterface> - <spirit:busInterface> - <spirit:name>clock_CLK_OUT2</spirit:name> - <spirit:busType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="clock" spirit:version="1.0"/> - <spirit:abstractionType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="clock_rtl" spirit:version="1.0"/> - <spirit:master/> - <spirit:portMaps> <spirit:portMap> <spirit:logicalPort> - <spirit:name>CLK</spirit:name> + <spirit:name>CLK_P</spirit:name> </spirit:logicalPort> <spirit:physicalPort> - <spirit:name>clk_out2</spirit:name> + <spirit:name>clkfb_out_p</spirit:name> </spirit:physicalPort> </spirit:portMap> </spirit:portMaps> <spirit:parameters> <spirit:parameter> - <spirit:name>FREQ_HZ</spirit:name> - <spirit:value spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT2.FREQ_HZ">100000000</spirit:value> + <spirit:name>CAN_DEBUG</spirit:name> + <spirit:value spirit:format="bool" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLKFB_OUT_D.CAN_DEBUG">false</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> </spirit:parameter> <spirit:parameter> - <spirit:name>ASSOCIATED_MMCM_LOCK</spirit:name> - <spirit:value spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT2.ASSOCIATED_MMCM_LOCK">locked</spirit:value> + <spirit:name>FREQ_HZ</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLKFB_OUT_D.FREQ_HZ">100000000</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> </spirit:parameter> </spirit:parameters> <spirit:vendorExtensions> <xilinx:busInterfaceInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="BUSIF_ENABLEMENT.clock_CLK_OUT2" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT2_USED'))=1)">true</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="BUSIF_ENABLEMENT.CLKFB_OUT_D" xilinx:dependency="((((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and ((spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))!="FDBK_AUTO") or (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP"))) or ((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP")) and ((spirit:decode(id('MODELPARAM_VALUE.C_MMCM_COMPENSATION'))!="INTERNAL"))) and ((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP") and (spirit:decode(id('MODELPARAM_VALUE.C_CLKFB_IN_SIGNALING'))="DIFF") and ((spirit:decode(id('MODELPARAM_VALUE.C_MMCM_COMPENSATION'))!="INTERNAL"))))">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:busInterfaceInfo> </spirit:vendorExtensions> </spirit:busInterface> <spirit:busInterface> - <spirit:name>clock_CLK_OUT3</spirit:name> - <spirit:busType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="clock" spirit:version="1.0"/> - <spirit:abstractionType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="clock_rtl" spirit:version="1.0"/> - <spirit:master/> + <spirit:name>reset</spirit:name> + <spirit:displayName>reset</spirit:displayName> + <spirit:busType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="reset" spirit:version="1.0"/> + <spirit:abstractionType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="reset_rtl" spirit:version="1.0"/> + <spirit:slave/> <spirit:portMaps> <spirit:portMap> <spirit:logicalPort> - <spirit:name>CLK</spirit:name> + <spirit:name>RST</spirit:name> </spirit:logicalPort> <spirit:physicalPort> - <spirit:name>clk_out3</spirit:name> + <spirit:name>reset</spirit:name> </spirit:physicalPort> </spirit:portMap> </spirit:portMaps> <spirit:parameters> <spirit:parameter> - <spirit:name>FREQ_HZ</spirit:name> - <spirit:value spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT3.FREQ_HZ">100000000</spirit:value> + <spirit:name>POLARITY</spirit:name> + <spirit:value spirit:id="BUSIFPARAM_VALUE.RESET.POLARITY">ACTIVE_HIGH</spirit:value> + </spirit:parameter> + <spirit:parameter> + <spirit:name>BOARD.ASSOCIATED_PARAM</spirit:name> + <spirit:value spirit:id="BUSIFPARAM_VALUE.RESET.BOARD.ASSOCIATED_PARAM">RESET_BOARD_INTERFACE</spirit:value> </spirit:parameter> <spirit:parameter> - <spirit:name>ASSOCIATED_MMCM_LOCK</spirit:name> - <spirit:value spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT3.ASSOCIATED_MMCM_LOCK">locked</spirit:value> + <spirit:name>INSERT_VIP</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="user" spirit:id="BUSIFPARAM_VALUE.RESET.INSERT_VIP">0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>simulation.rtl</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> </spirit:parameter> </spirit:parameters> <spirit:vendorExtensions> <xilinx:busInterfaceInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="BUSIF_ENABLEMENT.clock_CLK_OUT3" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT3_USED'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_USE_SPREAD_SPECTRUM'))=0)">true</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="BUSIF_ENABLEMENT.reset" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_USE_RESET'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_RESET_LOW'))=0) and (not spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION')))">true</xilinx:isEnabled> </xilinx:enablement> </xilinx:busInterfaceInfo> </spirit:vendorExtensions> </spirit:busInterface> <spirit:busInterface> - <spirit:name>clock_CLK_OUT4</spirit:name> - <spirit:busType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="clock" spirit:version="1.0"/> - <spirit:abstractionType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="clock_rtl" spirit:version="1.0"/> - <spirit:master/> + <spirit:name>resetn</spirit:name> + <spirit:displayName>resetn</spirit:displayName> + <spirit:busType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="reset" spirit:version="1.0"/> + <spirit:abstractionType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="reset_rtl" spirit:version="1.0"/> + <spirit:slave/> <spirit:portMaps> <spirit:portMap> <spirit:logicalPort> - <spirit:name>CLK</spirit:name> + <spirit:name>RST</spirit:name> </spirit:logicalPort> <spirit:physicalPort> - <spirit:name>clk_out4</spirit:name> + <spirit:name>resetn</spirit:name> </spirit:physicalPort> </spirit:portMap> </spirit:portMaps> <spirit:parameters> <spirit:parameter> - <spirit:name>FREQ_HZ</spirit:name> - <spirit:value spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT4.FREQ_HZ">100000000</spirit:value> + <spirit:name>POLARITY</spirit:name> + <spirit:value spirit:id="BUSIFPARAM_VALUE.RESETN.POLARITY">ACTIVE_LOW</spirit:value> + </spirit:parameter> + <spirit:parameter> + <spirit:name>BOARD.ASSOCIATED_PARAM</spirit:name> + <spirit:value spirit:id="BUSIFPARAM_VALUE.RESETN.BOARD.ASSOCIATED_PARAM">RESET_BOARD_INTERFACE</spirit:value> </spirit:parameter> <spirit:parameter> - <spirit:name>ASSOCIATED_MMCM_LOCK</spirit:name> - <spirit:value spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT4.ASSOCIATED_MMCM_LOCK">locked</spirit:value> + <spirit:name>INSERT_VIP</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="user" spirit:id="BUSIFPARAM_VALUE.RESETN.INSERT_VIP">0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>simulation.rtl</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> </spirit:parameter> </spirit:parameters> <spirit:vendorExtensions> <xilinx:busInterfaceInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="BUSIF_ENABLEMENT.clock_CLK_OUT4" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT4_USED'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_USE_SPREAD_SPECTRUM'))=0)">true</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="BUSIF_ENABLEMENT.resetn" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_USE_RESET'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_RESET_LOW'))=1) and (not spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION')))">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:busInterfaceInfo> </spirit:vendorExtensions> </spirit:busInterface> <spirit:busInterface> - <spirit:name>clock_CLK_OUT5</spirit:name> + <spirit:name>clock_CLK_IN1</spirit:name> <spirit:busType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="clock" spirit:version="1.0"/> <spirit:abstractionType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="clock_rtl" spirit:version="1.0"/> - <spirit:master/> + <spirit:slave/> <spirit:portMaps> <spirit:portMap> <spirit:logicalPort> - <spirit:name>CLK</spirit:name> + <spirit:name>CLK_IN1</spirit:name> </spirit:logicalPort> <spirit:physicalPort> - <spirit:name>clk_out5</spirit:name> + <spirit:name>clk_in1</spirit:name> </spirit:physicalPort> </spirit:portMap> </spirit:portMaps> <spirit:parameters> <spirit:parameter> <spirit:name>FREQ_HZ</spirit:name> - <spirit:value spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT5.FREQ_HZ">100000000</spirit:value> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_IN1.FREQ_HZ">100000000</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>FREQ_TOLERANCE_HZ</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_IN1.FREQ_TOLERANCE_HZ">0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>PHASE</spirit:name> + <spirit:value spirit:format="float" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_IN1.PHASE">0.0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>CLK_DOMAIN</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_IN1.CLK_DOMAIN"/> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>ASSOCIATED_BUSIF</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_IN1.ASSOCIATED_BUSIF"/> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>ASSOCIATED_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_IN1.ASSOCIATED_PORT"/> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>ASSOCIATED_RESET</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_IN1.ASSOCIATED_RESET"/> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>INSERT_VIP</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="user" spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_IN1.INSERT_VIP">0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>simulation.rtl</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> </spirit:parameter> <spirit:parameter> - <spirit:name>ASSOCIATED_MMCM_LOCK</spirit:name> - <spirit:value spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT5.ASSOCIATED_MMCM_LOCK">locked</spirit:value> + <spirit:name>BOARD.ASSOCIATED_PARAM</spirit:name> + <spirit:value spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_IN1.BOARD.ASSOCIATED_PARAM">CLK_IN1_BOARD_INTERFACE</spirit:value> </spirit:parameter> </spirit:parameters> - <spirit:vendorExtensions> - <xilinx:busInterfaceInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="BUSIF_ENABLEMENT.clock_CLK_OUT5" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT5_USED'))=1)">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:busInterfaceInfo> - </spirit:vendorExtensions> </spirit:busInterface> <spirit:busInterface> - <spirit:name>clock_CLK_OUT6</spirit:name> + <spirit:name>clock_CLK_OUT1</spirit:name> <spirit:busType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="clock" spirit:version="1.0"/> <spirit:abstractionType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="clock_rtl" spirit:version="1.0"/> <spirit:master/> <spirit:portMaps> <spirit:portMap> <spirit:logicalPort> - <spirit:name>CLK</spirit:name> + <spirit:name>CLK_OUT1</spirit:name> </spirit:logicalPort> <spirit:physicalPort> - <spirit:name>clk_out6</spirit:name> + <spirit:name>clk_out1</spirit:name> </spirit:physicalPort> </spirit:portMap> </spirit:portMaps> <spirit:parameters> <spirit:parameter> <spirit:name>FREQ_HZ</spirit:name> - <spirit:value spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT6.FREQ_HZ">100000000</spirit:value> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT1.FREQ_HZ">100000000</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>FREQ_TOLERANCE_HZ</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT1.FREQ_TOLERANCE_HZ">0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>PHASE</spirit:name> + <spirit:value spirit:format="float" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT1.PHASE">0.0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>CLK_DOMAIN</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT1.CLK_DOMAIN"/> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>ASSOCIATED_BUSIF</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT1.ASSOCIATED_BUSIF"/> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>ASSOCIATED_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT1.ASSOCIATED_PORT"/> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> </spirit:parameter> <spirit:parameter> - <spirit:name>ASSOCIATED_MMCM_LOCK</spirit:name> - <spirit:value spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT6.ASSOCIATED_MMCM_LOCK">locked</spirit:value> + <spirit:name>ASSOCIATED_RESET</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT1.ASSOCIATED_RESET"/> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>INSERT_VIP</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="user" spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT1.INSERT_VIP">0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>simulation.rtl</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> </spirit:parameter> </spirit:parameters> - <spirit:vendorExtensions> - <xilinx:busInterfaceInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="BUSIF_ENABLEMENT.clock_CLK_OUT6" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT6_USED'))=1)">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:busInterfaceInfo> - </spirit:vendorExtensions> </spirit:busInterface> <spirit:busInterface> - <spirit:name>clock_CLK_OUT7</spirit:name> + <spirit:name>clock_CLK_OUT2</spirit:name> <spirit:busType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="clock" spirit:version="1.0"/> <spirit:abstractionType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="clock_rtl" spirit:version="1.0"/> <spirit:master/> <spirit:portMaps> <spirit:portMap> <spirit:logicalPort> - <spirit:name>CLK</spirit:name> + <spirit:name>CLK_OUT2</spirit:name> </spirit:logicalPort> <spirit:physicalPort> - <spirit:name>clk_out7</spirit:name> + <spirit:name>clk_out2</spirit:name> </spirit:physicalPort> </spirit:portMap> </spirit:portMaps> <spirit:parameters> <spirit:parameter> <spirit:name>FREQ_HZ</spirit:name> - <spirit:value spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT7.FREQ_HZ">100000000</spirit:value> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT2.FREQ_HZ">100000000</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>FREQ_TOLERANCE_HZ</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT2.FREQ_TOLERANCE_HZ">0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>PHASE</spirit:name> + <spirit:value spirit:format="float" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT2.PHASE">0.0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>CLK_DOMAIN</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT2.CLK_DOMAIN"/> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>ASSOCIATED_BUSIF</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT2.ASSOCIATED_BUSIF"/> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>ASSOCIATED_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT2.ASSOCIATED_PORT"/> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>ASSOCIATED_RESET</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT2.ASSOCIATED_RESET"/> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> </spirit:parameter> <spirit:parameter> - <spirit:name>ASSOCIATED_MMCM_LOCK</spirit:name> - <spirit:value spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT7.ASSOCIATED_MMCM_LOCK">locked</spirit:value> + <spirit:name>INSERT_VIP</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="user" spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT2.INSERT_VIP">0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>simulation.rtl</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> </spirit:parameter> </spirit:parameters> - <spirit:vendorExtensions> - <xilinx:busInterfaceInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="BUSIF_ENABLEMENT.clock_CLK_OUT7" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT7_USED'))=1)">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:busInterfaceInfo> - </spirit:vendorExtensions> </spirit:busInterface> <spirit:busInterface> - <spirit:name>clock_CLKFB_OUT</spirit:name> + <spirit:name>clock_CLK_OUT3</spirit:name> <spirit:busType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="clock" spirit:version="1.0"/> <spirit:abstractionType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="clock_rtl" spirit:version="1.0"/> <spirit:master/> <spirit:portMaps> <spirit:portMap> <spirit:logicalPort> - <spirit:name>CLK</spirit:name> + <spirit:name>CLK_OUT3</spirit:name> </spirit:logicalPort> <spirit:physicalPort> - <spirit:name>clkfb_out</spirit:name> + <spirit:name>clk_out3</spirit:name> </spirit:physicalPort> </spirit:portMap> </spirit:portMaps> - <spirit:vendorExtensions> - <xilinx:busInterfaceInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="BUSIF_ENABLEMENT.clock_CLKFB_OUT" xilinx:dependency="((((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and ((spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))!="FDBK_AUTO") or (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP"))) or ((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP"))) and ((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))!=1) or (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))!="FDBK_AUTO_OFFCHIP") or (spirit:decode(id('MODELPARAM_VALUE.C_CLKFB_IN_SIGNALING'))!="DIFF")))">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:busInterfaceInfo> - </spirit:vendorExtensions> + <spirit:parameters> + <spirit:parameter> + <spirit:name>FREQ_HZ</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT3.FREQ_HZ">100000000</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>FREQ_TOLERANCE_HZ</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT3.FREQ_TOLERANCE_HZ">0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>PHASE</spirit:name> + <spirit:value spirit:format="float" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT3.PHASE">0.0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>CLK_DOMAIN</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT3.CLK_DOMAIN"/> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>ASSOCIATED_BUSIF</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT3.ASSOCIATED_BUSIF"/> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>ASSOCIATED_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT3.ASSOCIATED_PORT"/> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>ASSOCIATED_RESET</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT3.ASSOCIATED_RESET"/> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>INSERT_VIP</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="user" spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT3.INSERT_VIP">0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>simulation.rtl</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + </spirit:parameters> </spirit:busInterface> <spirit:busInterface> - <spirit:name>CLKFB_OUT_D</spirit:name> - <spirit:displayName>CLKFB_OUT_D</spirit:displayName> - <spirit:description>Differential Feeback Clock Output</spirit:description> - <spirit:busType spirit:vendor="xilinx.com" spirit:library="interface" spirit:name="diff_clock" spirit:version="1.0"/> - <spirit:abstractionType spirit:vendor="xilinx.com" spirit:library="interface" spirit:name="diff_clock_rtl" spirit:version="1.0"/> + <spirit:name>clock_CLK_OUT4</spirit:name> + <spirit:busType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="clock" spirit:version="1.0"/> + <spirit:abstractionType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="clock_rtl" spirit:version="1.0"/> <spirit:master/> <spirit:portMaps> <spirit:portMap> <spirit:logicalPort> - <spirit:name>CLK_N</spirit:name> + <spirit:name>CLK_OUT4</spirit:name> </spirit:logicalPort> <spirit:physicalPort> - <spirit:name>clkfb_out_n</spirit:name> - </spirit:physicalPort> - </spirit:portMap> - <spirit:portMap> - <spirit:logicalPort> - <spirit:name>CLK_P</spirit:name> - </spirit:logicalPort> - <spirit:physicalPort> - <spirit:name>clkfb_out_p</spirit:name> - </spirit:physicalPort> - </spirit:portMap> - </spirit:portMaps> - <spirit:vendorExtensions> - <xilinx:busInterfaceInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="BUSIF_ENABLEMENT.CLKFB_OUT_D" xilinx:dependency="((((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and ((spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))!="FDBK_AUTO") or (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP"))) or ((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP"))) and ((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP") and (spirit:decode(id('MODELPARAM_VALUE.C_CLKFB_IN_SIGNALING'))="DIFF")))">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:busInterfaceInfo> - </spirit:vendorExtensions> - </spirit:busInterface> - <spirit:busInterface> - <spirit:name>reset</spirit:name> - <spirit:displayName>reset</spirit:displayName> - <spirit:busType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="reset" spirit:version="1.0"/> - <spirit:abstractionType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="reset_rtl" spirit:version="1.0"/> - <spirit:slave/> - <spirit:portMaps> - <spirit:portMap> - <spirit:logicalPort> - <spirit:name>RST</spirit:name> - </spirit:logicalPort> - <spirit:physicalPort> - <spirit:name>reset</spirit:name> + <spirit:name>clk_out4</spirit:name> </spirit:physicalPort> </spirit:portMap> </spirit:portMaps> <spirit:parameters> <spirit:parameter> - <spirit:name>POLARITY</spirit:name> - <spirit:value spirit:id="BUSIFPARAM_VALUE.RESET.POLARITY">ACTIVE_HIGH</spirit:value> + <spirit:name>FREQ_HZ</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT4.FREQ_HZ">100000000</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> </spirit:parameter> <spirit:parameter> - <spirit:name>BOARD.ASSOCIATED_PARAM</spirit:name> - <spirit:value spirit:id="BUSIFPARAM_VALUE.RESET.BOARD.ASSOCIATED_PARAM">RESET_BOARD_INTERFACE</spirit:value> + <spirit:name>FREQ_TOLERANCE_HZ</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT4.FREQ_TOLERANCE_HZ">0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> </spirit:parameter> - </spirit:parameters> - <spirit:vendorExtensions> - <xilinx:busInterfaceInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="BUSIF_ENABLEMENT.reset" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_USE_RESET'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_RESET_LOW'))=0) and (not spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION')))">true</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:busInterfaceInfo> - </spirit:vendorExtensions> - </spirit:busInterface> - <spirit:busInterface> - <spirit:name>resetn</spirit:name> - <spirit:displayName>resetn</spirit:displayName> - <spirit:busType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="reset" spirit:version="1.0"/> - <spirit:abstractionType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="reset_rtl" spirit:version="1.0"/> - <spirit:slave/> - <spirit:portMaps> - <spirit:portMap> - <spirit:logicalPort> - <spirit:name>RST</spirit:name> - </spirit:logicalPort> - <spirit:physicalPort> - <spirit:name>resetn</spirit:name> - </spirit:physicalPort> - </spirit:portMap> - </spirit:portMaps> - <spirit:parameters> <spirit:parameter> - <spirit:name>POLARITY</spirit:name> - <spirit:value spirit:id="BUSIFPARAM_VALUE.RESETN.POLARITY">ACTIVE_LOW</spirit:value> + <spirit:name>PHASE</spirit:name> + <spirit:value spirit:format="float" spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT4.PHASE">0.0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>CLK_DOMAIN</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT4.CLK_DOMAIN"/> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>ASSOCIATED_BUSIF</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT4.ASSOCIATED_BUSIF"/> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>ASSOCIATED_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT4.ASSOCIATED_PORT"/> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>ASSOCIATED_RESET</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT4.ASSOCIATED_RESET"/> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>none</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> + </spirit:parameter> + <spirit:parameter> + <spirit:name>INSERT_VIP</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="user" spirit:id="BUSIFPARAM_VALUE.CLOCK_CLK_OUT4.INSERT_VIP">0</spirit:value> + <spirit:vendorExtensions> + <xilinx:parameterInfo> + <xilinx:parameterUsage>simulation.rtl</xilinx:parameterUsage> + </xilinx:parameterInfo> + </spirit:vendorExtensions> </spirit:parameter> </spirit:parameters> - <spirit:vendorExtensions> - <xilinx:busInterfaceInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="BUSIF_ENABLEMENT.resetn" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_USE_RESET'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_RESET_LOW'))=1) and (not spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION')))">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:busInterfaceInfo> - </spirit:vendorExtensions> - </spirit:busInterface> - <spirit:busInterface> - <spirit:name>s_drp</spirit:name> - <spirit:displayName>s_drp</spirit:displayName> - <spirit:description>Slave DRP Port</spirit:description> - <spirit:busType spirit:vendor="xilinx.com" spirit:library="interface" spirit:name="drp" spirit:version="1.0"/> - <spirit:abstractionType spirit:vendor="xilinx.com" spirit:library="interface" spirit:name="drp_rtl" spirit:version="1.0"/> - <spirit:slave/> - <spirit:portMaps> - <spirit:portMap> - <spirit:logicalPort> - <spirit:name>DADDR</spirit:name> - </spirit:logicalPort> - <spirit:physicalPort> - <spirit:name>daddr</spirit:name> - </spirit:physicalPort> - </spirit:portMap> - <spirit:portMap> - <spirit:logicalPort> - <spirit:name>DEN</spirit:name> - </spirit:logicalPort> - <spirit:physicalPort> - <spirit:name>den</spirit:name> - </spirit:physicalPort> - </spirit:portMap> - <spirit:portMap> - <spirit:logicalPort> - <spirit:name>DI</spirit:name> - </spirit:logicalPort> - <spirit:physicalPort> - <spirit:name>din</spirit:name> - </spirit:physicalPort> - </spirit:portMap> - <spirit:portMap> - <spirit:logicalPort> - <spirit:name>DO</spirit:name> - </spirit:logicalPort> - <spirit:physicalPort> - <spirit:name>dout</spirit:name> - </spirit:physicalPort> - </spirit:portMap> - <spirit:portMap> - <spirit:logicalPort> - <spirit:name>DRDY</spirit:name> - </spirit:logicalPort> - <spirit:physicalPort> - <spirit:name>drdy</spirit:name> - </spirit:physicalPort> - </spirit:portMap> - <spirit:portMap> - <spirit:logicalPort> - <spirit:name>DWE</spirit:name> - </spirit:logicalPort> - <spirit:physicalPort> - <spirit:name>dwe</spirit:name> - </spirit:physicalPort> - </spirit:portMap> - </spirit:portMaps> - <spirit:vendorExtensions> - <xilinx:busInterfaceInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="BUSIF_ENABLEMENT.s_drp" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_USE_DYN_RECONFIG')) and (not spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION')))">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:busInterfaceInfo> - </spirit:vendorExtensions> </spirit:busInterface> </spirit:busInterfaces> <spirit:model> <spirit:views> <spirit:view> - <spirit:name>xilinx_vhdlinstantiationtemplate</spirit:name> - <spirit:displayName>VHDL Instantiation Template</spirit:displayName> - <spirit:envIdentifier>vhdlSource:vivado.xilinx.com:synthesis.template</spirit:envIdentifier> - <spirit:language>vhdl</spirit:language> + <spirit:name>xilinx_anylanguagebehavioralsimulation</spirit:name> + <spirit:displayName>Simulation</spirit:displayName> + <spirit:envIdentifier>:vivado.xilinx.com:simulation</spirit:envIdentifier> + <spirit:modelName>clk_wiz_v6_0_14</spirit:modelName> <spirit:fileSetRef> - <spirit:localName>xilinx_vhdlinstantiationtemplate_view_fileset</spirit:localName> + <spirit:localName>xilinx_anylanguagebehavioralsimulation_view_fileset</spirit:localName> </spirit:fileSetRef> <spirit:parameters> <spirit:parameter> - <spirit:name>customizationCRC</spirit:name> - <spirit:value>df5bfb27</spirit:value> - </spirit:parameter> - <spirit:parameter> - <spirit:name>customizationCRCversion</spirit:name> - <spirit:value>5</spirit:value> - </spirit:parameter> - <spirit:parameter> - <spirit:name>boundaryCRC</spirit:name> - <spirit:value>893de65f</spirit:value> + <spirit:name>GENtimestamp</spirit:name> + <spirit:value>Wed Feb 26 10:52:59 UTC 2025</spirit:value> </spirit:parameter> <spirit:parameter> - <spirit:name>boundaryCRCversion</spirit:name> - <spirit:value>1</spirit:value> + <spirit:name>outputProductCRC</spirit:name> + <spirit:value>9:19cc2464</spirit:value> </spirit:parameter> + </spirit:parameters> + </spirit:view> + <spirit:view> + <spirit:name>xilinx_anylanguagesimulationwrapper</spirit:name> + <spirit:displayName>Simulation Wrapper</spirit:displayName> + <spirit:envIdentifier>:vivado.xilinx.com:simulation.wrapper</spirit:envIdentifier> + <spirit:modelName>clk_wiz_0</spirit:modelName> + <spirit:fileSetRef> + <spirit:localName>xilinx_anylanguagesimulationwrapper_view_fileset</spirit:localName> + </spirit:fileSetRef> + <spirit:parameters> <spirit:parameter> <spirit:name>GENtimestamp</spirit:name> - <spirit:value>Fri Jan 22 01:11:32 UTC 2016</spirit:value> + <spirit:value>Wed Feb 26 10:52:59 UTC 2025</spirit:value> </spirit:parameter> <spirit:parameter> - <spirit:name>StaleAtRelink</spirit:name> - <spirit:value>false</spirit:value> + <spirit:name>outputProductCRC</spirit:name> + <spirit:value>9:19cc2464</spirit:value> </spirit:parameter> </spirit:parameters> </spirit:view> @@ -920,33 +1525,18 @@ <spirit:name>xilinx_anylanguagesynthesis</spirit:name> <spirit:displayName>Synthesis</spirit:displayName> <spirit:envIdentifier>:vivado.xilinx.com:synthesis</spirit:envIdentifier> + <spirit:modelName>clk_wiz_v6_0_14</spirit:modelName> <spirit:fileSetRef> <spirit:localName>xilinx_anylanguagesynthesis_view_fileset</spirit:localName> </spirit:fileSetRef> <spirit:parameters> - <spirit:parameter> - <spirit:name>customizationCRC</spirit:name> - <spirit:value>df5bfb27</spirit:value> - </spirit:parameter> - <spirit:parameter> - <spirit:name>customizationCRCversion</spirit:name> - <spirit:value>5</spirit:value> - </spirit:parameter> - <spirit:parameter> - <spirit:name>boundaryCRC</spirit:name> - <spirit:value>893de65f</spirit:value> - </spirit:parameter> - <spirit:parameter> - <spirit:name>boundaryCRCversion</spirit:name> - <spirit:value>1</spirit:value> - </spirit:parameter> <spirit:parameter> <spirit:name>GENtimestamp</spirit:name> - <spirit:value>Fri Jan 22 01:11:33 UTC 2016</spirit:value> + <spirit:value>Wed Feb 26 10:52:59 UTC 2025</spirit:value> </spirit:parameter> <spirit:parameter> - <spirit:name>StaleAtRelink</spirit:name> - <spirit:value>false</spirit:value> + <spirit:name>outputProductCRC</spirit:name> + <spirit:value>9:72f46ee5</spirit:value> </spirit:parameter> </spirit:parameters> </spirit:view> @@ -954,101 +1544,47 @@ <spirit:name>xilinx_anylanguagesynthesiswrapper</spirit:name> <spirit:displayName>Synthesis Wrapper</spirit:displayName> <spirit:envIdentifier>:vivado.xilinx.com:synthesis.wrapper</spirit:envIdentifier> + <spirit:modelName>clk_wiz_0</spirit:modelName> <spirit:fileSetRef> <spirit:localName>xilinx_anylanguagesynthesiswrapper_view_fileset</spirit:localName> </spirit:fileSetRef> <spirit:parameters> - <spirit:parameter> - <spirit:name>customizationCRC</spirit:name> - <spirit:value>df5bfb27</spirit:value> - </spirit:parameter> - <spirit:parameter> - <spirit:name>customizationCRCversion</spirit:name> - <spirit:value>5</spirit:value> - </spirit:parameter> - <spirit:parameter> - <spirit:name>boundaryCRC</spirit:name> - <spirit:value>893de65f</spirit:value> - </spirit:parameter> - <spirit:parameter> - <spirit:name>boundaryCRCversion</spirit:name> - <spirit:value>1</spirit:value> - </spirit:parameter> <spirit:parameter> <spirit:name>GENtimestamp</spirit:name> - <spirit:value>Fri Jan 22 01:11:33 UTC 2016</spirit:value> + <spirit:value>Wed Feb 26 10:52:59 UTC 2025</spirit:value> </spirit:parameter> <spirit:parameter> - <spirit:name>StaleAtRelink</spirit:name> - <spirit:value>false</spirit:value> + <spirit:name>outputProductCRC</spirit:name> + <spirit:value>9:72f46ee5</spirit:value> </spirit:parameter> </spirit:parameters> </spirit:view> <spirit:view> - <spirit:name>xilinx_anylanguagebehavioralsimulation</spirit:name> - <spirit:displayName>Simulation</spirit:displayName> - <spirit:envIdentifier>:vivado.xilinx.com:simulation</spirit:envIdentifier> - <spirit:fileSetRef> - <spirit:localName>xilinx_anylanguagebehavioralsimulation_view_fileset</spirit:localName> - </spirit:fileSetRef> + <spirit:name>xilinx_elaborateports</spirit:name> + <spirit:displayName>Elaborate Ports</spirit:displayName> + <spirit:envIdentifier>:vivado.xilinx.com:elaborate.ports</spirit:envIdentifier> <spirit:parameters> <spirit:parameter> - <spirit:name>customizationCRC</spirit:name> - <spirit:value>b7329546</spirit:value> - </spirit:parameter> - <spirit:parameter> - <spirit:name>customizationCRCversion</spirit:name> - <spirit:value>5</spirit:value> - </spirit:parameter> - <spirit:parameter> - <spirit:name>boundaryCRC</spirit:name> - <spirit:value>893de65f</spirit:value> - </spirit:parameter> - <spirit:parameter> - <spirit:name>boundaryCRCversion</spirit:name> - <spirit:value>1</spirit:value> - </spirit:parameter> - <spirit:parameter> - <spirit:name>GENtimestamp</spirit:name> - <spirit:value>Fri Jan 22 01:11:33 UTC 2016</spirit:value> - </spirit:parameter> - <spirit:parameter> - <spirit:name>StaleAtRelink</spirit:name> - <spirit:value>false</spirit:value> + <spirit:name>outputProductCRC</spirit:name> + <spirit:value>9:8ebd4ae1</spirit:value> </spirit:parameter> </spirit:parameters> </spirit:view> <spirit:view> - <spirit:name>xilinx_anylanguagesimulationwrapper</spirit:name> - <spirit:displayName>Simulation Wrapper</spirit:displayName> - <spirit:envIdentifier>:vivado.xilinx.com:simulation.wrapper</spirit:envIdentifier> + <spirit:name>xilinx_externalfiles</spirit:name> + <spirit:displayName>External Files</spirit:displayName> + <spirit:envIdentifier>:vivado.xilinx.com:external.files</spirit:envIdentifier> <spirit:fileSetRef> - <spirit:localName>xilinx_anylanguagesimulationwrapper_view_fileset</spirit:localName> + <spirit:localName>xilinx_externalfiles_view_fileset</spirit:localName> </spirit:fileSetRef> <spirit:parameters> - <spirit:parameter> - <spirit:name>customizationCRC</spirit:name> - <spirit:value>b7329546</spirit:value> - </spirit:parameter> - <spirit:parameter> - <spirit:name>customizationCRCversion</spirit:name> - <spirit:value>5</spirit:value> - </spirit:parameter> - <spirit:parameter> - <spirit:name>boundaryCRC</spirit:name> - <spirit:value>893de65f</spirit:value> - </spirit:parameter> - <spirit:parameter> - <spirit:name>boundaryCRCversion</spirit:name> - <spirit:value>1</spirit:value> - </spirit:parameter> <spirit:parameter> <spirit:name>GENtimestamp</spirit:name> - <spirit:value>Fri Jan 22 01:11:33 UTC 2016</spirit:value> + <spirit:value>Wed Feb 26 10:54:28 UTC 2025</spirit:value> </spirit:parameter> <spirit:parameter> - <spirit:name>StaleAtRelink</spirit:name> - <spirit:value>false</spirit:value> + <spirit:name>outputProductCRC</spirit:name> + <spirit:value>9:72f46ee5</spirit:value> </spirit:parameter> </spirit:parameters> </spirit:view> @@ -1061,28 +1597,23 @@ </spirit:fileSetRef> <spirit:parameters> <spirit:parameter> - <spirit:name>customizationCRC</spirit:name> - <spirit:value>df5bfb27</spirit:value> - </spirit:parameter> - <spirit:parameter> - <spirit:name>customizationCRCversion</spirit:name> - <spirit:value>5</spirit:value> - </spirit:parameter> - <spirit:parameter> - <spirit:name>boundaryCRC</spirit:name> - <spirit:value>893de65f</spirit:value> - </spirit:parameter> - <spirit:parameter> - <spirit:name>boundaryCRCversion</spirit:name> - <spirit:value>1</spirit:value> + <spirit:name>GENtimestamp</spirit:name> + <spirit:value>Wed Feb 26 10:53:00 UTC 2025</spirit:value> </spirit:parameter> <spirit:parameter> - <spirit:name>GENtimestamp</spirit:name> - <spirit:value>Fri Jan 22 01:11:33 UTC 2016</spirit:value> + <spirit:name>outputProductCRC</spirit:name> + <spirit:value>9:72f46ee5</spirit:value> </spirit:parameter> + </spirit:parameters> + </spirit:view> + <spirit:view> + <spirit:name>xilinx_synthesisconstraints</spirit:name> + <spirit:displayName>Synthesis Constraints</spirit:displayName> + <spirit:envIdentifier>:vivado.xilinx.com:synthesis.constraints</spirit:envIdentifier> + <spirit:parameters> <spirit:parameter> - <spirit:name>StaleAtRelink</spirit:name> - <spirit:value>false</spirit:value> + <spirit:name>outputProductCRC</spirit:name> + <spirit:value>9:72f46ee5</spirit:value> </spirit:parameter> </spirit:parameters> </spirit:view> @@ -1094,63 +1625,33 @@ <spirit:localName>xilinx_versioninformation_view_fileset</spirit:localName> </spirit:fileSetRef> <spirit:parameters> - <spirit:parameter> - <spirit:name>customizationCRC</spirit:name> - <spirit:value>df5bfb27</spirit:value> - </spirit:parameter> - <spirit:parameter> - <spirit:name>customizationCRCversion</spirit:name> - <spirit:value>5</spirit:value> - </spirit:parameter> - <spirit:parameter> - <spirit:name>boundaryCRC</spirit:name> - <spirit:value>893de65f</spirit:value> - </spirit:parameter> - <spirit:parameter> - <spirit:name>boundaryCRCversion</spirit:name> - <spirit:value>1</spirit:value> - </spirit:parameter> <spirit:parameter> <spirit:name>GENtimestamp</spirit:name> - <spirit:value>Fri Jan 22 01:11:33 UTC 2016</spirit:value> + <spirit:value>Wed Feb 26 10:53:00 UTC 2025</spirit:value> </spirit:parameter> <spirit:parameter> - <spirit:name>StaleAtRelink</spirit:name> - <spirit:value>false</spirit:value> + <spirit:name>outputProductCRC</spirit:name> + <spirit:value>9:72f46ee5</spirit:value> </spirit:parameter> </spirit:parameters> </spirit:view> <spirit:view> - <spirit:name>xilinx_externalfiles</spirit:name> - <spirit:displayName>External Files</spirit:displayName> - <spirit:envIdentifier>:vivado.xilinx.com:external.files</spirit:envIdentifier> + <spirit:name>xilinx_vhdlinstantiationtemplate</spirit:name> + <spirit:displayName>VHDL Instantiation Template</spirit:displayName> + <spirit:envIdentifier>vhdlSource:vivado.xilinx.com:synthesis.template</spirit:envIdentifier> + <spirit:language>vhdl</spirit:language> + <spirit:modelName>clk_wiz_v6_0_14</spirit:modelName> <spirit:fileSetRef> - <spirit:localName>xilinx_externalfiles_view_fileset</spirit:localName> + <spirit:localName>xilinx_vhdlinstantiationtemplate_view_fileset</spirit:localName> </spirit:fileSetRef> <spirit:parameters> - <spirit:parameter> - <spirit:name>customizationCRC</spirit:name> - <spirit:value>df5bfb27</spirit:value> - </spirit:parameter> - <spirit:parameter> - <spirit:name>customizationCRCversion</spirit:name> - <spirit:value>5</spirit:value> - </spirit:parameter> - <spirit:parameter> - <spirit:name>boundaryCRC</spirit:name> - <spirit:value>893de65f</spirit:value> - </spirit:parameter> - <spirit:parameter> - <spirit:name>boundaryCRCversion</spirit:name> - <spirit:value>1</spirit:value> - </spirit:parameter> <spirit:parameter> <spirit:name>GENtimestamp</spirit:name> - <spirit:value>Fri Jan 22 01:13:26 UTC 2016</spirit:value> + <spirit:value>Wed Feb 26 10:52:50 UTC 2025</spirit:value> </spirit:parameter> <spirit:parameter> - <spirit:name>StaleAtRelink</spirit:name> - <spirit:value>false</spirit:value> + <spirit:name>outputProductCRC</spirit:name> + <spirit:value>9:72f46ee5</spirit:value> </spirit:parameter> </spirit:parameters> </spirit:view> @@ -1180,705 +1681,7 @@ </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>s_axi_aresetn</spirit:name> - <spirit:wire> - <spirit:direction>in</spirit:direction> - <spirit:wireTypeDefs> - <spirit:wireTypeDef> - <spirit:typeName>std_logic</spirit:typeName> - <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> - <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> - </spirit:wireTypeDef> - </spirit:wireTypeDefs> - <spirit:driver> - <spirit:defaultValue spirit:format="long">0</spirit:defaultValue> - </spirit:driver> - </spirit:wire> - <spirit:vendorExtensions> - <xilinx:portInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.s_axi_aresetn" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION'))">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:portInfo> - </spirit:vendorExtensions> - </spirit:port> - <spirit:port> - <spirit:name>s_axi_awaddr</spirit:name> - <spirit:wire> - <spirit:direction>in</spirit:direction> - <spirit:vector> - <spirit:left spirit:format="long" spirit:resolve="dependent" spirit:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_S_AXI_ADDR_WIDTH')) - 1)">10</spirit:left> - <spirit:right spirit:format="long">0</spirit:right> - </spirit:vector> - <spirit:wireTypeDefs> - <spirit:wireTypeDef> - <spirit:typeName>std_logic_vector</spirit:typeName> - <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> - <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> - </spirit:wireTypeDef> - </spirit:wireTypeDefs> - <spirit:driver> - <spirit:defaultValue spirit:format="long">0</spirit:defaultValue> - </spirit:driver> - </spirit:wire> - <spirit:vendorExtensions> - <xilinx:portInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.s_axi_awaddr" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION'))">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:portInfo> - </spirit:vendorExtensions> - </spirit:port> - <spirit:port> - <spirit:name>s_axi_awvalid</spirit:name> - <spirit:wire> - <spirit:direction>in</spirit:direction> - <spirit:wireTypeDefs> - <spirit:wireTypeDef> - <spirit:typeName>std_logic</spirit:typeName> - <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> - <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> - </spirit:wireTypeDef> - </spirit:wireTypeDefs> - <spirit:driver> - <spirit:defaultValue spirit:format="long">0</spirit:defaultValue> - </spirit:driver> - </spirit:wire> - <spirit:vendorExtensions> - <xilinx:portInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.s_axi_awvalid" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION'))">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:portInfo> - </spirit:vendorExtensions> - </spirit:port> - <spirit:port> - <spirit:name>s_axi_awready</spirit:name> - <spirit:wire> - <spirit:direction>out</spirit:direction> - <spirit:wireTypeDefs> - <spirit:wireTypeDef> - <spirit:typeName>std_logic</spirit:typeName> - <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> - <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> - </spirit:wireTypeDef> - </spirit:wireTypeDefs> - </spirit:wire> - <spirit:vendorExtensions> - <xilinx:portInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.s_axi_awready" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION'))">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:portInfo> - </spirit:vendorExtensions> - </spirit:port> - <spirit:port> - <spirit:name>s_axi_wdata</spirit:name> - <spirit:wire> - <spirit:direction>in</spirit:direction> - <spirit:vector> - <spirit:left spirit:format="long" spirit:resolve="dependent" spirit:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_S_AXI_DATA_WIDTH')) - 1)">31</spirit:left> - <spirit:right spirit:format="long">0</spirit:right> - </spirit:vector> - <spirit:wireTypeDefs> - <spirit:wireTypeDef> - <spirit:typeName>std_logic_vector</spirit:typeName> - <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> - <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> - </spirit:wireTypeDef> - </spirit:wireTypeDefs> - <spirit:driver> - <spirit:defaultValue spirit:format="long">0</spirit:defaultValue> - </spirit:driver> - </spirit:wire> - <spirit:vendorExtensions> - <xilinx:portInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.s_axi_wdata" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION'))">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:portInfo> - </spirit:vendorExtensions> - </spirit:port> - <spirit:port> - <spirit:name>s_axi_wstrb</spirit:name> - <spirit:wire> - <spirit:direction>in</spirit:direction> - <spirit:vector> - <spirit:left spirit:format="long" spirit:resolve="dependent" spirit:dependency="((spirit:decode(id('MODELPARAM_VALUE.C_S_AXI_DATA_WIDTH')) div 8) - 1)">3</spirit:left> - <spirit:right spirit:format="long">0</spirit:right> - </spirit:vector> - <spirit:wireTypeDefs> - <spirit:wireTypeDef> - <spirit:typeName>std_logic_vector</spirit:typeName> - <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> - <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> - </spirit:wireTypeDef> - </spirit:wireTypeDefs> - <spirit:driver> - <spirit:defaultValue spirit:format="long">0</spirit:defaultValue> - </spirit:driver> - </spirit:wire> - <spirit:vendorExtensions> - <xilinx:portInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.s_axi_wstrb" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION'))">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:portInfo> - </spirit:vendorExtensions> - </spirit:port> - <spirit:port> - <spirit:name>s_axi_wvalid</spirit:name> - <spirit:wire> - <spirit:direction>in</spirit:direction> - <spirit:wireTypeDefs> - <spirit:wireTypeDef> - <spirit:typeName>std_logic</spirit:typeName> - <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> - <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> - </spirit:wireTypeDef> - </spirit:wireTypeDefs> - <spirit:driver> - <spirit:defaultValue spirit:format="long">0</spirit:defaultValue> - </spirit:driver> - </spirit:wire> - <spirit:vendorExtensions> - <xilinx:portInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.s_axi_wvalid" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION'))">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:portInfo> - </spirit:vendorExtensions> - </spirit:port> - <spirit:port> - <spirit:name>s_axi_wready</spirit:name> - <spirit:wire> - <spirit:direction>out</spirit:direction> - <spirit:wireTypeDefs> - <spirit:wireTypeDef> - <spirit:typeName>std_logic</spirit:typeName> - <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> - <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> - </spirit:wireTypeDef> - </spirit:wireTypeDefs> - </spirit:wire> - <spirit:vendorExtensions> - <xilinx:portInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.s_axi_wready" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION'))">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:portInfo> - </spirit:vendorExtensions> - </spirit:port> - <spirit:port> - <spirit:name>s_axi_bresp</spirit:name> - <spirit:wire> - <spirit:direction>out</spirit:direction> - <spirit:vector> - <spirit:left spirit:format="long">1</spirit:left> - <spirit:right spirit:format="long">0</spirit:right> - </spirit:vector> - <spirit:wireTypeDefs> - <spirit:wireTypeDef> - <spirit:typeName>std_logic_vector</spirit:typeName> - <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> - <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> - </spirit:wireTypeDef> - </spirit:wireTypeDefs> - </spirit:wire> - <spirit:vendorExtensions> - <xilinx:portInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.s_axi_bresp" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION'))">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:portInfo> - </spirit:vendorExtensions> - </spirit:port> - <spirit:port> - <spirit:name>s_axi_bvalid</spirit:name> - <spirit:wire> - <spirit:direction>out</spirit:direction> - <spirit:wireTypeDefs> - <spirit:wireTypeDef> - <spirit:typeName>std_logic</spirit:typeName> - <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> - <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> - </spirit:wireTypeDef> - </spirit:wireTypeDefs> - </spirit:wire> - <spirit:vendorExtensions> - <xilinx:portInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.s_axi_bvalid" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION'))">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:portInfo> - </spirit:vendorExtensions> - </spirit:port> - <spirit:port> - <spirit:name>s_axi_bready</spirit:name> - <spirit:wire> - <spirit:direction>in</spirit:direction> - <spirit:wireTypeDefs> - <spirit:wireTypeDef> - <spirit:typeName>std_logic</spirit:typeName> - <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> - <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> - </spirit:wireTypeDef> - </spirit:wireTypeDefs> - <spirit:driver> - <spirit:defaultValue spirit:format="long">0</spirit:defaultValue> - </spirit:driver> - </spirit:wire> - <spirit:vendorExtensions> - <xilinx:portInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.s_axi_bready" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION'))">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:portInfo> - </spirit:vendorExtensions> - </spirit:port> - <spirit:port> - <spirit:name>s_axi_araddr</spirit:name> - <spirit:wire> - <spirit:direction>in</spirit:direction> - <spirit:vector> - <spirit:left spirit:format="long" spirit:resolve="dependent" spirit:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_S_AXI_ADDR_WIDTH')) - 1)">10</spirit:left> - <spirit:right spirit:format="long">0</spirit:right> - </spirit:vector> - <spirit:wireTypeDefs> - <spirit:wireTypeDef> - <spirit:typeName>std_logic_vector</spirit:typeName> - <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> - <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> - </spirit:wireTypeDef> - </spirit:wireTypeDefs> - <spirit:driver> - <spirit:defaultValue spirit:format="long">0</spirit:defaultValue> - </spirit:driver> - </spirit:wire> - <spirit:vendorExtensions> - <xilinx:portInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.s_axi_araddr" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION'))">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:portInfo> - </spirit:vendorExtensions> - </spirit:port> - <spirit:port> - <spirit:name>s_axi_arvalid</spirit:name> - <spirit:wire> - <spirit:direction>in</spirit:direction> - <spirit:wireTypeDefs> - <spirit:wireTypeDef> - <spirit:typeName>std_logic</spirit:typeName> - <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> - <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> - </spirit:wireTypeDef> - </spirit:wireTypeDefs> - <spirit:driver> - <spirit:defaultValue spirit:format="long">0</spirit:defaultValue> - </spirit:driver> - </spirit:wire> - <spirit:vendorExtensions> - <xilinx:portInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.s_axi_arvalid" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION'))">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:portInfo> - </spirit:vendorExtensions> - </spirit:port> - <spirit:port> - <spirit:name>s_axi_arready</spirit:name> - <spirit:wire> - <spirit:direction>out</spirit:direction> - <spirit:wireTypeDefs> - <spirit:wireTypeDef> - <spirit:typeName>std_logic</spirit:typeName> - <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> - <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> - </spirit:wireTypeDef> - </spirit:wireTypeDefs> - </spirit:wire> - <spirit:vendorExtensions> - <xilinx:portInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.s_axi_arready" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION'))">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:portInfo> - </spirit:vendorExtensions> - </spirit:port> - <spirit:port> - <spirit:name>s_axi_rdata</spirit:name> - <spirit:wire> - <spirit:direction>out</spirit:direction> - <spirit:vector> - <spirit:left spirit:format="long" spirit:resolve="dependent" spirit:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_S_AXI_DATA_WIDTH')) - 1)">31</spirit:left> - <spirit:right spirit:format="long">0</spirit:right> - </spirit:vector> - <spirit:wireTypeDefs> - <spirit:wireTypeDef> - <spirit:typeName>std_logic_vector</spirit:typeName> - <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> - <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> - </spirit:wireTypeDef> - </spirit:wireTypeDefs> - </spirit:wire> - <spirit:vendorExtensions> - <xilinx:portInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.s_axi_rdata" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION'))">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:portInfo> - </spirit:vendorExtensions> - </spirit:port> - <spirit:port> - <spirit:name>s_axi_rresp</spirit:name> - <spirit:wire> - <spirit:direction>out</spirit:direction> - <spirit:vector> - <spirit:left spirit:format="long">1</spirit:left> - <spirit:right spirit:format="long">0</spirit:right> - </spirit:vector> - <spirit:wireTypeDefs> - <spirit:wireTypeDef> - <spirit:typeName>std_logic_vector</spirit:typeName> - <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> - <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> - </spirit:wireTypeDef> - </spirit:wireTypeDefs> - </spirit:wire> - <spirit:vendorExtensions> - <xilinx:portInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.s_axi_rresp" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION'))">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:portInfo> - </spirit:vendorExtensions> - </spirit:port> - <spirit:port> - <spirit:name>s_axi_rvalid</spirit:name> - <spirit:wire> - <spirit:direction>out</spirit:direction> - <spirit:wireTypeDefs> - <spirit:wireTypeDef> - <spirit:typeName>std_logic</spirit:typeName> - <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> - <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> - </spirit:wireTypeDef> - </spirit:wireTypeDefs> - </spirit:wire> - <spirit:vendorExtensions> - <xilinx:portInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.s_axi_rvalid" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION'))">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:portInfo> - </spirit:vendorExtensions> - </spirit:port> - <spirit:port> - <spirit:name>s_axi_rready</spirit:name> - <spirit:wire> - <spirit:direction>in</spirit:direction> - <spirit:wireTypeDefs> - <spirit:wireTypeDef> - <spirit:typeName>std_logic</spirit:typeName> - <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> - <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> - </spirit:wireTypeDef> - </spirit:wireTypeDefs> - <spirit:driver> - <spirit:defaultValue spirit:format="long">0</spirit:defaultValue> - </spirit:driver> - </spirit:wire> - <spirit:vendorExtensions> - <xilinx:portInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.s_axi_rready" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION'))">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:portInfo> - </spirit:vendorExtensions> - </spirit:port> - <spirit:port> - <spirit:name>clk_in1</spirit:name> - <spirit:wire> - <spirit:direction>in</spirit:direction> - <spirit:wireTypeDefs> - <spirit:wireTypeDef> - <spirit:typeName>std_logic</spirit:typeName> - <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> - <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> - </spirit:wireTypeDef> - </spirit:wireTypeDefs> - <spirit:driver> - <spirit:defaultValue spirit:format="long">0</spirit:defaultValue> - </spirit:driver> - </spirit:wire> - <spirit:vendorExtensions> - <xilinx:portInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clk_in1" xilinx:dependency="((spirit:decode(id('MODELPARAM_VALUE.C_PRIM_SOURCE'))="Single_ended_clock_capable_pin") or (spirit:decode(id('MODELPARAM_VALUE.C_PRIM_SOURCE'))="Single_ended_non_clock_pin") or (spirit:decode(id('MODELPARAM_VALUE.C_PRIM_SOURCE'))="No_buffer") or (spirit:decode(id('MODELPARAM_VALUE.C_PRIM_SOURCE'))="Global_buffer"))">true</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:portInfo> - </spirit:vendorExtensions> - </spirit:port> - <spirit:port> - <spirit:name>clk_in1_p</spirit:name> - <spirit:wire> - <spirit:direction>in</spirit:direction> - <spirit:wireTypeDefs> - <spirit:wireTypeDef> - <spirit:typeName>std_logic</spirit:typeName> - <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> - <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> - </spirit:wireTypeDef> - </spirit:wireTypeDefs> - <spirit:driver> - <spirit:defaultValue spirit:format="long">0</spirit:defaultValue> - </spirit:driver> - </spirit:wire> - <spirit:vendorExtensions> - <xilinx:portInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clk_in1_p" xilinx:dependency="((spirit:decode(id('MODELPARAM_VALUE.C_PRIM_SOURCE'))="Differential_clock_capable_pin") or (spirit:decode(id('MODELPARAM_VALUE.C_PRIM_SOURCE'))="Differential_non_clock_pin"))">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:portInfo> - </spirit:vendorExtensions> - </spirit:port> - <spirit:port> - <spirit:name>clk_in1_n</spirit:name> - <spirit:wire> - <spirit:direction>in</spirit:direction> - <spirit:wireTypeDefs> - <spirit:wireTypeDef> - <spirit:typeName>std_logic</spirit:typeName> - <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> - <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> - </spirit:wireTypeDef> - </spirit:wireTypeDefs> - <spirit:driver> - <spirit:defaultValue spirit:format="long">0</spirit:defaultValue> - </spirit:driver> - </spirit:wire> - <spirit:vendorExtensions> - <xilinx:portInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clk_in1_n" xilinx:dependency="((spirit:decode(id('MODELPARAM_VALUE.C_PRIM_SOURCE'))="Differential_clock_capable_pin") or (spirit:decode(id('MODELPARAM_VALUE.C_PRIM_SOURCE'))="Differential_non_clock_pin"))">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:portInfo> - </spirit:vendorExtensions> - </spirit:port> - <spirit:port> - <spirit:name>clk_in2</spirit:name> - <spirit:wire> - <spirit:direction>in</spirit:direction> - <spirit:wireTypeDefs> - <spirit:wireTypeDef> - <spirit:typeName>std_logic</spirit:typeName> - <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> - <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> - </spirit:wireTypeDef> - </spirit:wireTypeDefs> - <spirit:driver> - <spirit:defaultValue spirit:format="long">0</spirit:defaultValue> - </spirit:driver> - </spirit:wire> - <spirit:vendorExtensions> - <xilinx:portInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clk_in2" xilinx:dependency="(((spirit:decode(id('MODELPARAM_VALUE.C_SECONDARY_SOURCE'))="Single_ended_clock_capable_pin") or (spirit:decode(id('MODELPARAM_VALUE.C_SECONDARY_SOURCE'))="Single_ended_non_clock_pin") or (spirit:decode(id('MODELPARAM_VALUE.C_SECONDARY_SOURCE'))="No_buffer") or (spirit:decode(id('MODELPARAM_VALUE.C_SECONDARY_SOURCE'))="Global_buffer")) and (spirit:decode(id('MODELPARAM_VALUE.C_USE_INCLK_SWITCHOVER'))=1))">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:portInfo> - </spirit:vendorExtensions> - </spirit:port> - <spirit:port> - <spirit:name>clk_in2_p</spirit:name> - <spirit:wire> - <spirit:direction>in</spirit:direction> - <spirit:wireTypeDefs> - <spirit:wireTypeDef> - <spirit:typeName>std_logic</spirit:typeName> - <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> - <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> - </spirit:wireTypeDef> - </spirit:wireTypeDefs> - <spirit:driver> - <spirit:defaultValue spirit:format="long">0</spirit:defaultValue> - </spirit:driver> - </spirit:wire> - <spirit:vendorExtensions> - <xilinx:portInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clk_in2_p" xilinx:dependency="(((spirit:decode(id('MODELPARAM_VALUE.C_SECONDARY_SOURCE'))="Differential_clock_capable_pin") or (spirit:decode(id('MODELPARAM_VALUE.C_SECONDARY_SOURCE'))="Differential_non_clock_pin")) and (spirit:decode(id('MODELPARAM_VALUE.C_USE_INCLK_SWITCHOVER'))=1))">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:portInfo> - </spirit:vendorExtensions> - </spirit:port> - <spirit:port> - <spirit:name>clk_in2_n</spirit:name> - <spirit:wire> - <spirit:direction>in</spirit:direction> - <spirit:wireTypeDefs> - <spirit:wireTypeDef> - <spirit:typeName>std_logic</spirit:typeName> - <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> - <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> - </spirit:wireTypeDef> - </spirit:wireTypeDefs> - <spirit:driver> - <spirit:defaultValue spirit:format="long">0</spirit:defaultValue> - </spirit:driver> - </spirit:wire> - <spirit:vendorExtensions> - <xilinx:portInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clk_in2_n" xilinx:dependency="(((spirit:decode(id('MODELPARAM_VALUE.C_SECONDARY_SOURCE'))="Differential_clock_capable_pin") or (spirit:decode(id('MODELPARAM_VALUE.C_SECONDARY_SOURCE'))="Differential_non_clock_pin")) and (spirit:decode(id('MODELPARAM_VALUE.C_USE_INCLK_SWITCHOVER'))=1))">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:portInfo> - </spirit:vendorExtensions> - </spirit:port> - <spirit:port> - <spirit:name>clk_in_sel</spirit:name> - <spirit:wire> - <spirit:direction>in</spirit:direction> - <spirit:wireTypeDefs> - <spirit:wireTypeDef> - <spirit:typeName>std_logic</spirit:typeName> - <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> - <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> - </spirit:wireTypeDef> - </spirit:wireTypeDefs> - <spirit:driver> - <spirit:defaultValue spirit:format="long">0</spirit:defaultValue> - </spirit:driver> - </spirit:wire> - <spirit:vendorExtensions> - <xilinx:portInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clk_in_sel" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_USE_INCLK_SWITCHOVER'))=1)">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:portInfo> - </spirit:vendorExtensions> - </spirit:port> - <spirit:port> - <spirit:name>clkfb_in</spirit:name> - <spirit:wire> - <spirit:direction>in</spirit:direction> - <spirit:wireTypeDefs> - <spirit:wireTypeDef> - <spirit:typeName>std_logic</spirit:typeName> - <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> - <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> - </spirit:wireTypeDef> - </spirit:wireTypeDefs> - <spirit:driver> - <spirit:defaultValue spirit:format="long">0</spirit:defaultValue> - </spirit:driver> - </spirit:wire> - <spirit:vendorExtensions> - <xilinx:portInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clkfb_in" xilinx:dependency="((((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and ((spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))!="FDBK_AUTO") or (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP"))) or ((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP"))) and ((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))!=1) or (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))!="FDBK_AUTO_OFFCHIP") or (spirit:decode(id('MODELPARAM_VALUE.C_CLKFB_IN_SIGNALING'))!="DIFF")))">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:portInfo> - </spirit:vendorExtensions> - </spirit:port> - <spirit:port> - <spirit:name>clkfb_in_p</spirit:name> - <spirit:wire> - <spirit:direction>in</spirit:direction> - <spirit:wireTypeDefs> - <spirit:wireTypeDef> - <spirit:typeName>std_logic</spirit:typeName> - <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> - <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> - </spirit:wireTypeDef> - </spirit:wireTypeDefs> - <spirit:driver> - <spirit:defaultValue spirit:format="long">0</spirit:defaultValue> - </spirit:driver> - </spirit:wire> - <spirit:vendorExtensions> - <xilinx:portInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clkfb_in_p" xilinx:dependency="((((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and ((spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))!="FDBK_AUTO") or (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP"))) or ((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP"))) and ((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP") and (spirit:decode(id('MODELPARAM_VALUE.C_CLKFB_IN_SIGNALING'))="DIFF")))">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:portInfo> - </spirit:vendorExtensions> - </spirit:port> - <spirit:port> - <spirit:name>clkfb_in_n</spirit:name> - <spirit:wire> - <spirit:direction>in</spirit:direction> - <spirit:wireTypeDefs> - <spirit:wireTypeDef> - <spirit:typeName>std_logic</spirit:typeName> - <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> - <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> - </spirit:wireTypeDef> - </spirit:wireTypeDefs> - <spirit:driver> - <spirit:defaultValue spirit:format="long">0</spirit:defaultValue> - </spirit:driver> - </spirit:wire> - <spirit:vendorExtensions> - <xilinx:portInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clkfb_in_n" xilinx:dependency="((((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and ((spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))!="FDBK_AUTO") or (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP"))) or ((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP"))) and ((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP") and (spirit:decode(id('MODELPARAM_VALUE.C_CLKFB_IN_SIGNALING'))="DIFF")))">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:portInfo> - </spirit:vendorExtensions> - </spirit:port> - <spirit:port> - <spirit:name>daddr</spirit:name> - <spirit:wire> - <spirit:direction>in</spirit:direction> - <spirit:vector> - <spirit:left spirit:format="long">6</spirit:left> - <spirit:right spirit:format="long">0</spirit:right> - </spirit:vector> - <spirit:wireTypeDefs> - <spirit:wireTypeDef> - <spirit:typeName>std_logic_vector</spirit:typeName> - <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> - <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> - </spirit:wireTypeDef> - </spirit:wireTypeDefs> - <spirit:driver> - <spirit:defaultValue spirit:format="long">0</spirit:defaultValue> - </spirit:driver> - </spirit:wire> - <spirit:vendorExtensions> - <xilinx:portInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.daddr" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_USE_DYN_RECONFIG')) and (not spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION')))">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:portInfo> - </spirit:vendorExtensions> - </spirit:port> - <spirit:port> - <spirit:name>dclk</spirit:name> - <spirit:wire> - <spirit:direction>in</spirit:direction> - <spirit:wireTypeDefs> - <spirit:wireTypeDef> - <spirit:typeName>std_logic</spirit:typeName> - <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> - <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> - </spirit:wireTypeDef> - </spirit:wireTypeDefs> - <spirit:driver> - <spirit:defaultValue spirit:format="long">0</spirit:defaultValue> - </spirit:driver> - </spirit:wire> - <spirit:vendorExtensions> - <xilinx:portInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.dclk" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_USE_DYN_RECONFIG')) and (not spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION')))">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:portInfo> - </spirit:vendorExtensions> - </spirit:port> - <spirit:port> - <spirit:name>den</spirit:name> + <spirit:name>s_axi_aresetn</spirit:name> <spirit:wire> <spirit:direction>in</spirit:direction> <spirit:wireTypeDefs> @@ -1895,17 +1698,17 @@ <spirit:vendorExtensions> <xilinx:portInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.den" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_USE_DYN_RECONFIG')) and (not spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION')))">false</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.s_axi_aresetn" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION'))">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:portInfo> </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>din</spirit:name> + <spirit:name>s_axi_awaddr</spirit:name> <spirit:wire> <spirit:direction>in</spirit:direction> <spirit:vector> - <spirit:left spirit:format="long">15</spirit:left> + <spirit:left spirit:format="long" spirit:resolve="dependent" spirit:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_S_AXI_ADDR_WIDTH')) - 1)">10</spirit:left> <spirit:right spirit:format="long">0</spirit:right> </spirit:vector> <spirit:wireTypeDefs> @@ -1922,37 +1725,36 @@ <spirit:vendorExtensions> <xilinx:portInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.din" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_USE_DYN_RECONFIG')) and (not spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION')))">false</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.s_axi_awaddr" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION'))">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:portInfo> </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>dout</spirit:name> + <spirit:name>s_axi_awvalid</spirit:name> <spirit:wire> - <spirit:direction>out</spirit:direction> - <spirit:vector> - <spirit:left spirit:format="long">15</spirit:left> - <spirit:right spirit:format="long">0</spirit:right> - </spirit:vector> + <spirit:direction>in</spirit:direction> <spirit:wireTypeDefs> <spirit:wireTypeDef> - <spirit:typeName>std_logic_vector</spirit:typeName> + <spirit:typeName>std_logic</spirit:typeName> <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> </spirit:wireTypeDef> </spirit:wireTypeDefs> + <spirit:driver> + <spirit:defaultValue spirit:format="long">0</spirit:defaultValue> + </spirit:driver> </spirit:wire> <spirit:vendorExtensions> <xilinx:portInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.dout" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_USE_DYN_RECONFIG')) and (not spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION')))">false</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.s_axi_awvalid" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION'))">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:portInfo> </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>drdy</spirit:name> + <spirit:name>s_axi_awready</spirit:name> <spirit:wire> <spirit:direction>out</spirit:direction> <spirit:wireTypeDefs> @@ -1966,18 +1768,22 @@ <spirit:vendorExtensions> <xilinx:portInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.drdy" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_USE_DYN_RECONFIG')) and (not spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION')))">false</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.s_axi_awready" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION'))">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:portInfo> </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>dwe</spirit:name> + <spirit:name>s_axi_wdata</spirit:name> <spirit:wire> <spirit:direction>in</spirit:direction> + <spirit:vector> + <spirit:left spirit:format="long" spirit:resolve="dependent" spirit:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_S_AXI_DATA_WIDTH')) - 1)">31</spirit:left> + <spirit:right spirit:format="long">0</spirit:right> + </spirit:vector> <spirit:wireTypeDefs> <spirit:wireTypeDef> - <spirit:typeName>std_logic</spirit:typeName> + <spirit:typeName>std_logic_vector</spirit:typeName> <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> </spirit:wireTypeDef> @@ -1989,18 +1795,22 @@ <spirit:vendorExtensions> <xilinx:portInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.dwe" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_USE_DYN_RECONFIG')) and (not spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION')))">false</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.s_axi_wdata" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION'))">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:portInfo> </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>psclk</spirit:name> + <spirit:name>s_axi_wstrb</spirit:name> <spirit:wire> <spirit:direction>in</spirit:direction> + <spirit:vector> + <spirit:left spirit:format="long" spirit:resolve="dependent" spirit:dependency="((spirit:decode(id('MODELPARAM_VALUE.C_S_AXI_DATA_WIDTH')) div 8) - 1)">3</spirit:left> + <spirit:right spirit:format="long">0</spirit:right> + </spirit:vector> <spirit:wireTypeDefs> <spirit:wireTypeDef> - <spirit:typeName>std_logic</spirit:typeName> + <spirit:typeName>std_logic_vector</spirit:typeName> <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> </spirit:wireTypeDef> @@ -2012,13 +1822,13 @@ <spirit:vendorExtensions> <xilinx:portInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.psclk" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_USE_DYN_PHASE_SHIFT'))=1)">false</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.s_axi_wstrb" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION'))">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:portInfo> </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>psen</spirit:name> + <spirit:name>s_axi_wvalid</spirit:name> <spirit:wire> <spirit:direction>in</spirit:direction> <spirit:wireTypeDefs> @@ -2035,15 +1845,15 @@ <spirit:vendorExtensions> <xilinx:portInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.psen" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_USE_DYN_PHASE_SHIFT'))=1)">false</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.s_axi_wvalid" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION'))">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:portInfo> </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>psincdec</spirit:name> + <spirit:name>s_axi_wready</spirit:name> <spirit:wire> - <spirit:direction>in</spirit:direction> + <spirit:direction>out</spirit:direction> <spirit:wireTypeDefs> <spirit:wireTypeDef> <spirit:typeName>std_logic</spirit:typeName> @@ -2051,25 +1861,26 @@ <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> </spirit:wireTypeDef> </spirit:wireTypeDefs> - <spirit:driver> - <spirit:defaultValue spirit:format="long">0</spirit:defaultValue> - </spirit:driver> </spirit:wire> <spirit:vendorExtensions> <xilinx:portInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.psincdec" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_USE_DYN_PHASE_SHIFT'))=1)">false</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.s_axi_wready" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION'))">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:portInfo> </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>psdone</spirit:name> + <spirit:name>s_axi_bresp</spirit:name> <spirit:wire> <spirit:direction>out</spirit:direction> + <spirit:vector> + <spirit:left spirit:format="long">1</spirit:left> + <spirit:right spirit:format="long">0</spirit:right> + </spirit:vector> <spirit:wireTypeDefs> <spirit:wireTypeDef> - <spirit:typeName>std_logic</spirit:typeName> + <spirit:typeName>std_logic_vector</spirit:typeName> <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> </spirit:wireTypeDef> @@ -2078,13 +1889,13 @@ <spirit:vendorExtensions> <xilinx:portInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.psdone" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_USE_DYN_PHASE_SHIFT'))=1)">false</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.s_axi_bresp" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION'))">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:portInfo> </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>clk_out1</spirit:name> + <spirit:name>s_axi_bvalid</spirit:name> <spirit:wire> <spirit:direction>out</spirit:direction> <spirit:wireTypeDefs> @@ -2095,9 +1906,16 @@ </spirit:wireTypeDef> </spirit:wireTypeDefs> </spirit:wire> + <spirit:vendorExtensions> + <xilinx:portInfo> + <xilinx:enablement> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.s_axi_bvalid" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION'))">false</xilinx:isEnabled> + </xilinx:enablement> + </xilinx:portInfo> + </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>clk_out1_ce</spirit:name> + <spirit:name>s_axi_bready</spirit:name> <spirit:wire> <spirit:direction>in</spirit:direction> <spirit:wireTypeDefs> @@ -2114,18 +1932,22 @@ <spirit:vendorExtensions> <xilinx:portInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clk_out1_ce" xilinx:dependency="((spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT1_DRIVES'))="BUFGCE") or (spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT1_DRIVES'))="BUFHCE") or (spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT1_DRIVES'))="BUFR")) and (spirit:decode(id('MODELPARAM_VALUE.C_USE_SAFE_CLOCK_STARTUP'))=0)">false</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.s_axi_bready" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION'))">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:portInfo> </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>clk_out1_clr</spirit:name> + <spirit:name>s_axi_araddr</spirit:name> <spirit:wire> <spirit:direction>in</spirit:direction> + <spirit:vector> + <spirit:left spirit:format="long" spirit:resolve="dependent" spirit:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_S_AXI_ADDR_WIDTH')) - 1)">10</spirit:left> + <spirit:right spirit:format="long">0</spirit:right> + </spirit:vector> <spirit:wireTypeDefs> <spirit:wireTypeDef> - <spirit:typeName>std_logic</spirit:typeName> + <spirit:typeName>std_logic_vector</spirit:typeName> <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> </spirit:wireTypeDef> @@ -2137,15 +1959,15 @@ <spirit:vendorExtensions> <xilinx:portInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clk_out1_clr" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT1_DRIVES'))="BUFR")">false</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.s_axi_araddr" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION'))">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:portInfo> </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>clk_out2</spirit:name> + <spirit:name>s_axi_arvalid</spirit:name> <spirit:wire> - <spirit:direction>out</spirit:direction> + <spirit:direction>in</spirit:direction> <spirit:wireTypeDefs> <spirit:wireTypeDef> <spirit:typeName>std_logic</spirit:typeName> @@ -2153,19 +1975,22 @@ <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> </spirit:wireTypeDef> </spirit:wireTypeDefs> + <spirit:driver> + <spirit:defaultValue spirit:format="long">0</spirit:defaultValue> + </spirit:driver> </spirit:wire> <spirit:vendorExtensions> <xilinx:portInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clk_out2" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT2_USED'))=1)">true</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.s_axi_arvalid" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION'))">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:portInfo> </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>clk_out2_ce</spirit:name> + <spirit:name>s_axi_arready</spirit:name> <spirit:wire> - <spirit:direction>in</spirit:direction> + <spirit:direction>out</spirit:direction> <spirit:wireTypeDefs> <spirit:wireTypeDef> <spirit:typeName>std_logic</spirit:typeName> @@ -2173,48 +1998,50 @@ <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> </spirit:wireTypeDef> </spirit:wireTypeDefs> - <spirit:driver> - <spirit:defaultValue spirit:format="long">0</spirit:defaultValue> - </spirit:driver> </spirit:wire> <spirit:vendorExtensions> <xilinx:portInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clk_out2_ce" xilinx:dependency="(((spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT2_DRIVES'))="BUFGCE") or (spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT2_DRIVES'))="BUFHCE") or (spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT2_DRIVES'))="BUFR")) and (spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT2_USED'))=1)) and (spirit:decode(id('MODELPARAM_VALUE.C_USE_SAFE_CLOCK_STARTUP'))=0)">false</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.s_axi_arready" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION'))">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:portInfo> </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>clk_out2_clr</spirit:name> + <spirit:name>s_axi_rdata</spirit:name> <spirit:wire> - <spirit:direction>in</spirit:direction> + <spirit:direction>out</spirit:direction> + <spirit:vector> + <spirit:left spirit:format="long" spirit:resolve="dependent" spirit:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_S_AXI_DATA_WIDTH')) - 1)">31</spirit:left> + <spirit:right spirit:format="long">0</spirit:right> + </spirit:vector> <spirit:wireTypeDefs> <spirit:wireTypeDef> - <spirit:typeName>std_logic</spirit:typeName> + <spirit:typeName>std_logic_vector</spirit:typeName> <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> </spirit:wireTypeDef> </spirit:wireTypeDefs> - <spirit:driver> - <spirit:defaultValue spirit:format="long">0</spirit:defaultValue> - </spirit:driver> </spirit:wire> <spirit:vendorExtensions> <xilinx:portInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clk_out2_clr" xilinx:dependency="((spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT2_DRIVES'))="BUFR") and (spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT2_USED'))=1))">false</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.s_axi_rdata" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION'))">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:portInfo> </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>clk_out3</spirit:name> + <spirit:name>s_axi_rresp</spirit:name> <spirit:wire> <spirit:direction>out</spirit:direction> + <spirit:vector> + <spirit:left spirit:format="long">1</spirit:left> + <spirit:right spirit:format="long">0</spirit:right> + </spirit:vector> <spirit:wireTypeDefs> <spirit:wireTypeDef> - <spirit:typeName>std_logic</spirit:typeName> + <spirit:typeName>std_logic_vector</spirit:typeName> <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> </spirit:wireTypeDef> @@ -2223,15 +2050,15 @@ <spirit:vendorExtensions> <xilinx:portInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clk_out3" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT3_USED'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_USE_SPREAD_SPECTRUM'))=0)">true</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.s_axi_rresp" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION'))">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:portInfo> </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>clk_out3_ce</spirit:name> + <spirit:name>s_axi_rvalid</spirit:name> <spirit:wire> - <spirit:direction>in</spirit:direction> + <spirit:direction>out</spirit:direction> <spirit:wireTypeDefs> <spirit:wireTypeDef> <spirit:typeName>std_logic</spirit:typeName> @@ -2239,20 +2066,17 @@ <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> </spirit:wireTypeDef> </spirit:wireTypeDefs> - <spirit:driver> - <spirit:defaultValue spirit:format="long">0</spirit:defaultValue> - </spirit:driver> </spirit:wire> <spirit:vendorExtensions> <xilinx:portInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clk_out3_ce" xilinx:dependency="(((spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT3_DRIVES'))="BUFGCE") or (spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT3_DRIVES'))="BUFHCE") or (spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT3_DRIVES'))="BUFR")) and (spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT3_USED'))=1)) and (spirit:decode(id('MODELPARAM_VALUE.C_USE_SPREAD_SPECTRUM'))=0) and (spirit:decode(id('MODELPARAM_VALUE.C_USE_SAFE_CLOCK_STARTUP'))=0)">false</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.s_axi_rvalid" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION'))">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:portInfo> </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>clk_out3_clr</spirit:name> + <spirit:name>s_axi_rready</spirit:name> <spirit:wire> <spirit:direction>in</spirit:direction> <spirit:wireTypeDefs> @@ -2269,15 +2093,15 @@ <spirit:vendorExtensions> <xilinx:portInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clk_out3_clr" xilinx:dependency="((spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT3_DRIVES'))="BUFR") and (spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT3_USED'))=1)) and (spirit:decode(id('MODELPARAM_VALUE.C_USE_SPREAD_SPECTRUM'))=0)">false</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.s_axi_rready" xilinx:dependency="spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION'))">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:portInfo> </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>clk_out4</spirit:name> + <spirit:name>clk_in1_p</spirit:name> <spirit:wire> - <spirit:direction>out</spirit:direction> + <spirit:direction>in</spirit:direction> <spirit:wireTypeDefs> <spirit:wireTypeDef> <spirit:typeName>std_logic</spirit:typeName> @@ -2285,17 +2109,20 @@ <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> </spirit:wireTypeDef> </spirit:wireTypeDefs> + <spirit:driver> + <spirit:defaultValue spirit:format="long">0</spirit:defaultValue> + </spirit:driver> </spirit:wire> <spirit:vendorExtensions> <xilinx:portInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clk_out4" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT4_USED'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_USE_SPREAD_SPECTRUM'))=0)">true</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clk_in1_p" xilinx:dependency="((spirit:decode(id('MODELPARAM_VALUE.C_PRIM_SOURCE'))="Differential_clock_capable_pin") or (spirit:decode(id('MODELPARAM_VALUE.C_PRIM_SOURCE'))="Differential_non_clock_pin"))">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:portInfo> </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>clk_out4_ce</spirit:name> + <spirit:name>clk_in1_n</spirit:name> <spirit:wire> <spirit:direction>in</spirit:direction> <spirit:wireTypeDefs> @@ -2312,13 +2139,13 @@ <spirit:vendorExtensions> <xilinx:portInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clk_out4_ce" xilinx:dependency="(((spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT4_DRIVES'))="BUFGCE") or (spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT4_DRIVES'))="BUFHCE") or (spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT4_DRIVES'))="BUFR")) and (spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT4_USED'))=1)) and (spirit:decode(id('MODELPARAM_VALUE.C_USE_SPREAD_SPECTRUM'))=0) and (spirit:decode(id('MODELPARAM_VALUE.C_USE_SAFE_CLOCK_STARTUP'))=0)">false</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clk_in1_n" xilinx:dependency="((spirit:decode(id('MODELPARAM_VALUE.C_PRIM_SOURCE'))="Differential_clock_capable_pin") or (spirit:decode(id('MODELPARAM_VALUE.C_PRIM_SOURCE'))="Differential_non_clock_pin"))">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:portInfo> </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>clk_out4_clr</spirit:name> + <spirit:name>clk_in2_p</spirit:name> <spirit:wire> <spirit:direction>in</spirit:direction> <spirit:wireTypeDefs> @@ -2335,15 +2162,15 @@ <spirit:vendorExtensions> <xilinx:portInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clk_out4_clr" xilinx:dependency="((spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT4_DRIVES'))="BUFR") and (spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT4_USED'))=1)) and (spirit:decode(id('MODELPARAM_VALUE.C_USE_SPREAD_SPECTRUM'))=0)">false</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clk_in2_p" xilinx:dependency="(((spirit:decode(id('MODELPARAM_VALUE.C_SECONDARY_SOURCE'))="Differential_clock_capable_pin") or (spirit:decode(id('MODELPARAM_VALUE.C_SECONDARY_SOURCE'))="Differential_non_clock_pin")) and (spirit:decode(id('MODELPARAM_VALUE.C_USE_INCLK_SWITCHOVER'))=1))">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:portInfo> </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>clk_out5</spirit:name> + <spirit:name>clk_in2_n</spirit:name> <spirit:wire> - <spirit:direction>out</spirit:direction> + <spirit:direction>in</spirit:direction> <spirit:wireTypeDefs> <spirit:wireTypeDef> <spirit:typeName>std_logic</spirit:typeName> @@ -2351,17 +2178,20 @@ <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> </spirit:wireTypeDef> </spirit:wireTypeDefs> + <spirit:driver> + <spirit:defaultValue spirit:format="long">0</spirit:defaultValue> + </spirit:driver> </spirit:wire> <spirit:vendorExtensions> <xilinx:portInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clk_out5" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT5_USED'))=1)">false</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clk_in2_n" xilinx:dependency="(((spirit:decode(id('MODELPARAM_VALUE.C_SECONDARY_SOURCE'))="Differential_clock_capable_pin") or (spirit:decode(id('MODELPARAM_VALUE.C_SECONDARY_SOURCE'))="Differential_non_clock_pin")) and (spirit:decode(id('MODELPARAM_VALUE.C_USE_INCLK_SWITCHOVER'))=1))">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:portInfo> </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>clk_out5_ce</spirit:name> + <spirit:name>clkfb_in_p</spirit:name> <spirit:wire> <spirit:direction>in</spirit:direction> <spirit:wireTypeDefs> @@ -2378,13 +2208,13 @@ <spirit:vendorExtensions> <xilinx:portInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clk_out5_ce" xilinx:dependency="(((spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT5_DRIVES'))="BUFGCE") or (spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT5_DRIVES'))="BUFHCE") or (spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT5_DRIVES'))="BUFR")) and (spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT5_USED'))=1)) and (spirit:decode(id('MODELPARAM_VALUE.C_USE_SAFE_CLOCK_STARTUP'))=0)">false</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clkfb_in_p" xilinx:dependency="((((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and ((spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))!="FDBK_AUTO") or (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP"))) or ((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP")) and ((spirit:decode(id('MODELPARAM_VALUE.C_MMCM_COMPENSATION'))!="INTERNAL"))) and ((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP") and (spirit:decode(id('MODELPARAM_VALUE.C_CLKFB_IN_SIGNALING'))="DIFF") and ((spirit:decode(id('MODELPARAM_VALUE.C_MMCM_COMPENSATION'))!="INTERNAL"))))">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:portInfo> </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>clk_out5_clr</spirit:name> + <spirit:name>clkfb_in_n</spirit:name> <spirit:wire> <spirit:direction>in</spirit:direction> <spirit:wireTypeDefs> @@ -2401,13 +2231,13 @@ <spirit:vendorExtensions> <xilinx:portInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clk_out5_clr" xilinx:dependency="((spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT5_DRIVES'))="BUFR") and (spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT5_USED'))=1))">false</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clkfb_in_n" xilinx:dependency="((((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and ((spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))!="FDBK_AUTO") or (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP"))) or ((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP")) and ((spirit:decode(id('MODELPARAM_VALUE.C_MMCM_COMPENSATION'))!="INTERNAL"))) and ((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP") and (spirit:decode(id('MODELPARAM_VALUE.C_CLKFB_IN_SIGNALING'))="DIFF") and ((spirit:decode(id('MODELPARAM_VALUE.C_MMCM_COMPENSATION'))!="INTERNAL"))))">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:portInfo> </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>clk_out6</spirit:name> + <spirit:name>clkfb_out_p</spirit:name> <spirit:wire> <spirit:direction>out</spirit:direction> <spirit:wireTypeDefs> @@ -2421,15 +2251,15 @@ <spirit:vendorExtensions> <xilinx:portInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clk_out6" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT6_USED'))=1)">false</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clkfb_out_p" xilinx:dependency="((((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and ((spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))!="FDBK_AUTO") or (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP"))) or ((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP")) and ((spirit:decode(id('MODELPARAM_VALUE.C_MMCM_COMPENSATION'))!="INTERNAL"))) and ((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP") and (spirit:decode(id('MODELPARAM_VALUE.C_CLKFB_IN_SIGNALING'))="DIFF") and ((spirit:decode(id('MODELPARAM_VALUE.C_MMCM_COMPENSATION'))!="INTERNAL"))))">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:portInfo> </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>clk_out6_ce</spirit:name> + <spirit:name>clkfb_out_n</spirit:name> <spirit:wire> - <spirit:direction>in</spirit:direction> + <spirit:direction>out</spirit:direction> <spirit:wireTypeDefs> <spirit:wireTypeDef> <spirit:typeName>std_logic</spirit:typeName> @@ -2437,20 +2267,17 @@ <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> </spirit:wireTypeDef> </spirit:wireTypeDefs> - <spirit:driver> - <spirit:defaultValue spirit:format="long">0</spirit:defaultValue> - </spirit:driver> </spirit:wire> <spirit:vendorExtensions> <xilinx:portInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clk_out6_ce" xilinx:dependency="(((spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT6_DRIVES'))="BUFGCE") or (spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT6_DRIVES'))="BUFHCE") or (spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT6_DRIVES'))="BUFR")) and (spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT6_USED'))=1)) and (spirit:decode(id('MODELPARAM_VALUE.C_USE_SAFE_CLOCK_STARTUP'))=0)">false</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clkfb_out_n" xilinx:dependency="((((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and ((spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))!="FDBK_AUTO") or (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP"))) or ((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP")) and ((spirit:decode(id('MODELPARAM_VALUE.C_MMCM_COMPENSATION'))!="INTERNAL"))) and ((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP") and (spirit:decode(id('MODELPARAM_VALUE.C_CLKFB_IN_SIGNALING'))="DIFF") and ((spirit:decode(id('MODELPARAM_VALUE.C_MMCM_COMPENSATION'))!="INTERNAL"))))">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:portInfo> </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>clk_out6_clr</spirit:name> + <spirit:name>reset</spirit:name> <spirit:wire> <spirit:direction>in</spirit:direction> <spirit:wireTypeDefs> @@ -2467,15 +2294,15 @@ <spirit:vendorExtensions> <xilinx:portInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clk_out6_clr" xilinx:dependency="((spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT6_DRIVES'))="BUFR") and (spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT6_USED'))=1))">false</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.reset" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_USE_RESET'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_RESET_LOW'))=0) and (not spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION')))">true</xilinx:isEnabled> </xilinx:enablement> </xilinx:portInfo> </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>clk_out7</spirit:name> + <spirit:name>resetn</spirit:name> <spirit:wire> - <spirit:direction>out</spirit:direction> + <spirit:direction>in</spirit:direction> <spirit:wireTypeDefs> <spirit:wireTypeDef> <spirit:typeName>std_logic</spirit:typeName> @@ -2483,17 +2310,20 @@ <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> </spirit:wireTypeDef> </spirit:wireTypeDefs> + <spirit:driver> + <spirit:defaultValue spirit:format="long">0</spirit:defaultValue> + </spirit:driver> </spirit:wire> <spirit:vendorExtensions> <xilinx:portInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clk_out7" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT7_USED'))=1)">false</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.resetn" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_USE_RESET'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_RESET_LOW'))=1) and (not spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION')))">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:portInfo> </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>clk_out7_ce</spirit:name> + <spirit:name>ref_clk</spirit:name> <spirit:wire> <spirit:direction>in</spirit:direction> <spirit:wireTypeDefs> @@ -2510,18 +2340,22 @@ <spirit:vendorExtensions> <xilinx:portInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clk_out7_ce" xilinx:dependency="(((spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT7_DRIVES'))="BUFGCE") or (spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT7_DRIVES'))="BUFHCE") or (spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT7_DRIVES'))="BUFR")) and (spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT7_USED'))=1)) and (spirit:decode(id('MODELPARAM_VALUE.C_USE_SAFE_CLOCK_STARTUP'))=0)">false</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.ref_clk" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_ENABLE_CLOCK_MONITOR'))=1)">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:portInfo> </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>clk_out7_clr</spirit:name> + <spirit:name>clk_stop</spirit:name> <spirit:wire> - <spirit:direction>in</spirit:direction> + <spirit:direction>out</spirit:direction> + <spirit:vector> + <spirit:left spirit:format="long">3</spirit:left> + <spirit:right spirit:format="long">0</spirit:right> + </spirit:vector> <spirit:wireTypeDefs> <spirit:wireTypeDef> - <spirit:typeName>std_logic</spirit:typeName> + <spirit:typeName>std_logic_vector</spirit:typeName> <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> </spirit:wireTypeDef> @@ -2533,33 +2367,40 @@ <spirit:vendorExtensions> <xilinx:portInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clk_out7_clr" xilinx:dependency="((spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT7_DRIVES'))="BUFR") and (spirit:decode(id('MODELPARAM_VALUE.C_CLKOUT7_USED'))=1))">false</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clk_stop" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_ENABLE_CLOCK_MONITOR'))=1)">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:portInfo> </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>clkfb_out</spirit:name> + <spirit:name>clk_glitch</spirit:name> <spirit:wire> <spirit:direction>out</spirit:direction> + <spirit:vector> + <spirit:left spirit:format="long">3</spirit:left> + <spirit:right spirit:format="long">0</spirit:right> + </spirit:vector> <spirit:wireTypeDefs> <spirit:wireTypeDef> - <spirit:typeName>std_logic</spirit:typeName> + <spirit:typeName>std_logic_vector</spirit:typeName> <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> </spirit:wireTypeDef> </spirit:wireTypeDefs> + <spirit:driver> + <spirit:defaultValue spirit:format="long">0</spirit:defaultValue> + </spirit:driver> </spirit:wire> <spirit:vendorExtensions> <xilinx:portInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clkfb_out" xilinx:dependency="((((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and ((spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))!="FDBK_AUTO") or (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP"))) or ((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP"))) and ((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))!=1) or (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))!="FDBK_AUTO_OFFCHIP") or (spirit:decode(id('MODELPARAM_VALUE.C_CLKFB_IN_SIGNALING'))!="DIFF")))">false</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clk_glitch" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_ENABLE_CLOCK_MONITOR'))=1)">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:portInfo> </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>clkfb_out_p</spirit:name> + <spirit:name>interrupt</spirit:name> <spirit:wire> <spirit:direction>out</spirit:direction> <spirit:wireTypeDefs> @@ -2569,37 +2410,47 @@ <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> </spirit:wireTypeDef> </spirit:wireTypeDefs> + <spirit:driver> + <spirit:defaultValue spirit:format="long">0</spirit:defaultValue> + </spirit:driver> </spirit:wire> <spirit:vendorExtensions> <xilinx:portInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clkfb_out_p" xilinx:dependency="((((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and ((spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))!="FDBK_AUTO") or (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP"))) or ((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP"))) and ((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP") and (spirit:decode(id('MODELPARAM_VALUE.C_CLKFB_IN_SIGNALING'))="DIFF")))">false</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.interrupt" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_ENABLE_CLOCK_MONITOR'))=1)">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:portInfo> </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>clkfb_out_n</spirit:name> + <spirit:name>clk_oor</spirit:name> <spirit:wire> <spirit:direction>out</spirit:direction> + <spirit:vector> + <spirit:left spirit:format="long">3</spirit:left> + <spirit:right spirit:format="long">0</spirit:right> + </spirit:vector> <spirit:wireTypeDefs> <spirit:wireTypeDef> - <spirit:typeName>std_logic</spirit:typeName> + <spirit:typeName>std_logic_vector</spirit:typeName> <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> </spirit:wireTypeDef> </spirit:wireTypeDefs> + <spirit:driver> + <spirit:defaultValue spirit:format="long">0</spirit:defaultValue> + </spirit:driver> </spirit:wire> <spirit:vendorExtensions> <xilinx:portInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clkfb_out_n" xilinx:dependency="((((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and ((spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))!="FDBK_AUTO") or (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP"))) or ((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP"))) and ((spirit:decode(id('MODELPARAM_VALUE.C_USE_PHASE_ALIGNMENT'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_FEEDBACK_SOURCE'))="FDBK_AUTO_OFFCHIP") and (spirit:decode(id('MODELPARAM_VALUE.C_CLKFB_IN_SIGNALING'))="DIFF")))">false</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clk_oor" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_ENABLE_CLOCK_MONITOR'))=1)">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:portInfo> </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>reset</spirit:name> + <spirit:name>user_clk0</spirit:name> <spirit:wire> <spirit:direction>in</spirit:direction> <spirit:wireTypeDefs> @@ -2616,13 +2467,13 @@ <spirit:vendorExtensions> <xilinx:portInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.reset" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_USE_RESET'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_RESET_LOW'))=0) and (not spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION')))">true</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.user_clk0" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_ENABLE_CLOCK_MONITOR'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_ENABLE_USER_CLOCK0'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_Enable_PLL0'))=0)">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:portInfo> </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>resetn</spirit:name> + <spirit:name>user_clk1</spirit:name> <spirit:wire> <spirit:direction>in</spirit:direction> <spirit:wireTypeDefs> @@ -2639,13 +2490,13 @@ <spirit:vendorExtensions> <xilinx:portInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.resetn" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_USE_RESET'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_RESET_LOW'))=1) and (not spirit:decode(id('MODELPARAM_VALUE.C_INTERFACE_SELECTION')))">false</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.user_clk1" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_ENABLE_CLOCK_MONITOR'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_ENABLE_USER_CLOCK1'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_Enable_PLL1'))=0)">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:portInfo> </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>power_down</spirit:name> + <spirit:name>user_clk2</spirit:name> <spirit:wire> <spirit:direction>in</spirit:direction> <spirit:wireTypeDefs> @@ -2662,15 +2513,15 @@ <spirit:vendorExtensions> <xilinx:portInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.power_down" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_USE_POWER_DOWN'))=1)">false</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.user_clk2" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_ENABLE_CLOCK_MONITOR'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_ENABLE_USER_CLOCK2'))=1)">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:portInfo> </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>input_clk_stopped</spirit:name> + <spirit:name>user_clk3</spirit:name> <spirit:wire> - <spirit:direction>out</spirit:direction> + <spirit:direction>in</spirit:direction> <spirit:wireTypeDefs> <spirit:wireTypeDef> <spirit:typeName>std_logic</spirit:typeName> @@ -2678,17 +2529,33 @@ <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> </spirit:wireTypeDef> </spirit:wireTypeDefs> + <spirit:driver> + <spirit:defaultValue spirit:format="long">0</spirit:defaultValue> + </spirit:driver> </spirit:wire> <spirit:vendorExtensions> <xilinx:portInfo> <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.input_clk_stopped" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_USE_INCLK_STOPPED'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_PRIMITIVE'))="MMCM")">false</xilinx:isEnabled> + <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.user_clk3" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_ENABLE_CLOCK_MONITOR'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_ENABLE_USER_CLOCK3'))=1)">false</xilinx:isEnabled> </xilinx:enablement> </xilinx:portInfo> </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>clkfb_stopped</spirit:name> + <spirit:name>clk_in1</spirit:name> + <spirit:wire> + <spirit:direction>in</spirit:direction> + <spirit:wireTypeDefs> + <spirit:wireTypeDef> + <spirit:typeName>std_logic</spirit:typeName> + <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> + <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> + </spirit:wireTypeDef> + </spirit:wireTypeDefs> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:name>clk_out1</spirit:name> <spirit:wire> <spirit:direction>out</spirit:direction> <spirit:wireTypeDefs> @@ -2699,16 +2566,9 @@ </spirit:wireTypeDef> </spirit:wireTypeDefs> </spirit:wire> - <spirit:vendorExtensions> - <xilinx:portInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.clkfb_stopped" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_USE_CLKFB_STOPPED'))=1) and (spirit:decode(id('MODELPARAM_VALUE.C_PRIMITIVE'))="MMCM")">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:portInfo> - </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>locked</spirit:name> + <spirit:name>clk_out2</spirit:name> <spirit:wire> <spirit:direction>out</spirit:direction> <spirit:wireTypeDefs> @@ -2719,16 +2579,9 @@ </spirit:wireTypeDef> </spirit:wireTypeDefs> </spirit:wire> - <spirit:vendorExtensions> - <xilinx:portInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.locked" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_USE_LOCKED'))=1)">true</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:portInfo> - </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>cddcdone</spirit:name> + <spirit:name>clk_out3</spirit:name> <spirit:wire> <spirit:direction>out</spirit:direction> <spirit:wireTypeDefs> @@ -2739,18 +2592,24 @@ </spirit:wireTypeDef> </spirit:wireTypeDefs> </spirit:wire> - <spirit:vendorExtensions> - <xilinx:portInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.cddcdone" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_HAS_CDDC'))=1)">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:portInfo> - </spirit:vendorExtensions> </spirit:port> <spirit:port> - <spirit:name>cddcreq</spirit:name> + <spirit:name>clk_out4</spirit:name> <spirit:wire> - <spirit:direction>in</spirit:direction> + <spirit:direction>out</spirit:direction> + <spirit:wireTypeDefs> + <spirit:wireTypeDef> + <spirit:typeName>std_logic</spirit:typeName> + <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> + <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> + </spirit:wireTypeDef> + </spirit:wireTypeDefs> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:name>locked</spirit:name> + <spirit:wire> + <spirit:direction>out</spirit:direction> <spirit:wireTypeDefs> <spirit:wireTypeDef> <spirit:typeName>std_logic</spirit:typeName> @@ -2758,17 +2617,7 @@ <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> </spirit:wireTypeDef> </spirit:wireTypeDefs> - <spirit:driver> - <spirit:defaultValue spirit:format="long">0</spirit:defaultValue> - </spirit:driver> </spirit:wire> - <spirit:vendorExtensions> - <xilinx:portInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PORT_ENABLEMENT.cddcreq" xilinx:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_HAS_CDDC'))=1)">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:portInfo> - </spirit:vendorExtensions> </spirit:port> </spirit:ports> <spirit:modelParameters> @@ -2776,6 +2625,62 @@ <spirit:name>C_CLKOUT2_USED</spirit:name> <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKOUT2_USED" spirit:order="194">1</spirit:value> </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="INTEGER"> + <spirit:name>C_USER_CLK_FREQ0</spirit:name> + <spirit:value spirit:format="float" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_USER_CLK_FREQ0" spirit:order="1194">100.0</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="string"> + <spirit:name>C_AUTO_PRIMITIVE</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_AUTO_PRIMITIVE" spirit:order="1195">MMCM</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="INTEGER"> + <spirit:name>C_USER_CLK_FREQ1</spirit:name> + <spirit:value spirit:format="float" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_USER_CLK_FREQ1" spirit:order="1195">100.0</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="INTEGER"> + <spirit:name>C_USER_CLK_FREQ2</spirit:name> + <spirit:value spirit:format="float" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_USER_CLK_FREQ2" spirit:order="1196">100.0</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="INTEGER"> + <spirit:name>C_USER_CLK_FREQ3</spirit:name> + <spirit:value spirit:format="float" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_USER_CLK_FREQ3" spirit:order="1197">100.0</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="INTEGER"> + <spirit:name>C_ENABLE_CLOCK_MONITOR</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_ENABLE_CLOCK_MONITOR" spirit:order="1200">0</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="INTEGER"> + <spirit:name>C_ENABLE_USER_CLOCK0</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_ENABLE_USER_CLOCK0" spirit:order="1201">0</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="INTEGER"> + <spirit:name>C_ENABLE_USER_CLOCK1</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_ENABLE_USER_CLOCK1" spirit:order="1202">0</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="INTEGER"> + <spirit:name>C_ENABLE_USER_CLOCK2</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_ENABLE_USER_CLOCK2" spirit:order="1203">0</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="INTEGER"> + <spirit:name>C_ENABLE_USER_CLOCK3</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_ENABLE_USER_CLOCK3" spirit:order="1204">0</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="INTEGER"> + <spirit:name>C_Enable_PLL0</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_Enable_PLL0" spirit:order="1205">0</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="INTEGER"> + <spirit:name>C_Enable_PLL1</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_Enable_PLL1" spirit:order="1206">0</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="INTEGER"> + <spirit:name>C_REF_CLK_FREQ</spirit:name> + <spirit:value spirit:format="float" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_REF_CLK_FREQ" spirit:order="1209">100.0</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="INTEGER"> + <spirit:name>C_PRECISION</spirit:name> + <spirit:value spirit:format="float" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_PRECISION" spirit:order="1209">1</spirit:value> + </spirit:modelParameter> <spirit:modelParameter spirit:dataType="INTEGER"> <spirit:name>C_CLKOUT3_USED</spirit:name> <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKOUT3_USED" spirit:order="195">1</spirit:value> @@ -2856,6 +2761,10 @@ <spirit:name>C_USE_DYN_PHASE_SHIFT</spirit:name> <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_USE_DYN_PHASE_SHIFT" spirit:order="213">0</spirit:value> </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="INTEGER"> + <spirit:name>C_OPTIMIZE_CLOCKING_STRUCTURE_EN</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_OPTIMIZE_CLOCKING_STRUCTURE_EN" spirit:order="214">0</spirit:value> + </spirit:modelParameter> <spirit:modelParameter spirit:dataType="INTEGER"> <spirit:name>C_USE_INCLK_SWITCHOVER</spirit:name> <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_USE_INCLK_SWITCHOVER" spirit:order="214">0</spirit:value> @@ -2908,6 +2817,10 @@ <spirit:name>C_PRIM_SOURCE</spirit:name> <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_PRIM_SOURCE" spirit:order="224">Single_ended_clock_capable_pin</spirit:value> </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_PHASESHIFT_MODE</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_PHASESHIFT_MODE" spirit:order="2240">WAVEFORM</spirit:value> + </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> <spirit:name>C_SECONDARY_SOURCE</spirit:name> <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_SECONDARY_SOURCE" spirit:order="225">Single_ended_clock_capable_pin</spirit:value> @@ -3003,19 +2916,19 @@ </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> <spirit:name>C_OUTCLK_SUM_ROW1</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_OUTCLK_SUM_ROW1" spirit:order="247">CLK_OUT1___100.000______0.000______50.0______151.366____132.063</spirit:value> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_OUTCLK_SUM_ROW1" spirit:order="247">clk_out1__100.00000______0.000______50.0______151.366____132.063</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> <spirit:name>C_OUTCLK_SUM_ROW2</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_OUTCLK_SUM_ROW2" spirit:order="248">CLK_OUT2___200.000______0.000______50.0______132.221____132.063</spirit:value> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_OUTCLK_SUM_ROW2" spirit:order="248">clk_out2__200.00000______0.000______50.0______132.221____132.063</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> <spirit:name>C_OUTCLK_SUM_ROW3</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_OUTCLK_SUM_ROW3" spirit:order="249">CLK_OUT3____12.000______0.000______50.0______231.952____132.063</spirit:value> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_OUTCLK_SUM_ROW3" spirit:order="249">clk_out3__12.00000______0.000______50.0______231.952____132.063</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> <spirit:name>C_OUTCLK_SUM_ROW4</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_OUTCLK_SUM_ROW4" spirit:order="250">CLK_OUT4____50.000______0.000______50.0______174.353____132.063</spirit:value> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_OUTCLK_SUM_ROW4" spirit:order="250">clk_out4__50.00000______0.000______50.0______174.353____132.063</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> <spirit:name>C_OUTCLK_SUM_ROW5</spirit:name> @@ -3115,19 +3028,19 @@ </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> <spirit:name>C_CLKOUT1_OUT_FREQ</spirit:name> - <spirit:value spirit:format="float" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKOUT1_OUT_FREQ" spirit:order="275">100.000</spirit:value> + <spirit:value spirit:format="float" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKOUT1_OUT_FREQ" spirit:order="275">100.00000</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> <spirit:name>C_CLKOUT2_OUT_FREQ</spirit:name> - <spirit:value spirit:format="float" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKOUT2_OUT_FREQ" spirit:order="276">200.000</spirit:value> + <spirit:value spirit:format="float" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKOUT2_OUT_FREQ" spirit:order="276">200.00000</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> <spirit:name>C_CLKOUT3_OUT_FREQ</spirit:name> - <spirit:value spirit:format="float" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKOUT3_OUT_FREQ" spirit:order="277">12.000</spirit:value> + <spirit:value spirit:format="float" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKOUT3_OUT_FREQ" spirit:order="277">12.00000</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> <spirit:name>C_CLKOUT4_OUT_FREQ</spirit:name> - <spirit:value spirit:format="float" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKOUT4_OUT_FREQ" spirit:order="278">50.000</spirit:value> + <spirit:value spirit:format="float" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKOUT4_OUT_FREQ" spirit:order="278">50.00000</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> <spirit:name>C_CLKOUT5_OUT_FREQ</spirit:name> @@ -3279,33 +3192,33 @@ </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> <spirit:name>C_MMCM_STARTUP_WAIT</spirit:name> - <spirit:value spirit:format="bool" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_MMCM_STARTUP_WAIT" spirit:order="307">FALSE</spirit:value> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_MMCM_STARTUP_WAIT" spirit:order="307">FALSE</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> <spirit:name>C_MMCM_CLKOUT0_DIVIDE_F</spirit:name> <spirit:value spirit:format="float" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_MMCM_CLKOUT0_DIVIDE_F" spirit:order="308">6.000</spirit:value> </spirit:modelParameter> - <spirit:modelParameter spirit:dataType="INTEGER"> + <spirit:modelParameter spirit:dataType="STRING"> <spirit:name>C_MMCM_CLKOUT1_DIVIDE</spirit:name> <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_MMCM_CLKOUT1_DIVIDE" spirit:order="309">3</spirit:value> </spirit:modelParameter> - <spirit:modelParameter spirit:dataType="INTEGER"> + <spirit:modelParameter spirit:dataType="STRING"> <spirit:name>C_MMCM_CLKOUT2_DIVIDE</spirit:name> <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_MMCM_CLKOUT2_DIVIDE" spirit:order="310">50</spirit:value> </spirit:modelParameter> - <spirit:modelParameter spirit:dataType="INTEGER"> + <spirit:modelParameter spirit:dataType="STRING"> <spirit:name>C_MMCM_CLKOUT3_DIVIDE</spirit:name> <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_MMCM_CLKOUT3_DIVIDE" spirit:order="311">12</spirit:value> </spirit:modelParameter> - <spirit:modelParameter spirit:dataType="INTEGER"> + <spirit:modelParameter spirit:dataType="STRING"> <spirit:name>C_MMCM_CLKOUT4_DIVIDE</spirit:name> <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_MMCM_CLKOUT4_DIVIDE" spirit:order="312">1</spirit:value> </spirit:modelParameter> - <spirit:modelParameter spirit:dataType="INTEGER"> + <spirit:modelParameter spirit:dataType="STRING"> <spirit:name>C_MMCM_CLKOUT5_DIVIDE</spirit:name> <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_MMCM_CLKOUT5_DIVIDE" spirit:order="313">1</spirit:value> </spirit:modelParameter> - <spirit:modelParameter spirit:dataType="INTEGER"> + <spirit:modelParameter spirit:dataType="STRING"> <spirit:name>C_MMCM_CLKOUT6_DIVIDE</spirit:name> <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_MMCM_CLKOUT6_DIVIDE" spirit:order="314">1</spirit:value> </spirit:modelParameter> @@ -3526,198 +3439,463 @@ <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_PRIMARY_PORT" spirit:order="368">clk_in1</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_SECONDARY_PORT</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_SECONDARY_PORT" spirit:order="369">clk_in2</spirit:value> + <spirit:name>C_SECONDARY_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_SECONDARY_PORT" spirit:order="369">clk_in2</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_CLK_OUT1_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLK_OUT1_PORT" spirit:order="370">clk_out1</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_CLK_OUT2_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLK_OUT2_PORT" spirit:order="371">clk_out2</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_CLK_OUT3_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLK_OUT3_PORT" spirit:order="372">clk_out3</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_CLK_OUT4_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLK_OUT4_PORT" spirit:order="373">clk_out4</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_CLK_OUT5_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLK_OUT5_PORT" spirit:order="374">clk_out5</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_CLK_OUT6_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLK_OUT6_PORT" spirit:order="375">clk_out6</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_CLK_OUT7_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLK_OUT7_PORT" spirit:order="376">clk_out7</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_RESET_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_RESET_PORT" spirit:order="377">reset</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_LOCKED_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_LOCKED_PORT" spirit:order="378">locked</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_CLKFB_IN_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKFB_IN_PORT" spirit:order="379">clkfb_in</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_CLKFB_IN_P_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKFB_IN_P_PORT" spirit:order="380">clkfb_in_p</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_CLKFB_IN_N_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKFB_IN_N_PORT" spirit:order="381">clkfb_in_n</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_CLKFB_OUT_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKFB_OUT_PORT" spirit:order="382">clkfb_out</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_CLKFB_OUT_P_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKFB_OUT_P_PORT" spirit:order="383">clkfb_out_p</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_CLKFB_OUT_N_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKFB_OUT_N_PORT" spirit:order="384">clkfb_out_n</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_POWER_DOWN_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_POWER_DOWN_PORT" spirit:order="385">power_down</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_DADDR_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_DADDR_PORT" spirit:order="386">daddr</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_DCLK_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_DCLK_PORT" spirit:order="387">dclk</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_DRDY_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_DRDY_PORT" spirit:order="388">drdy</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_DWE_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_DWE_PORT" spirit:order="389">dwe</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_DIN_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_DIN_PORT" spirit:order="390">din</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_DOUT_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_DOUT_PORT" spirit:order="391">dout</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_DEN_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_DEN_PORT" spirit:order="392">den</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_PSCLK_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_PSCLK_PORT" spirit:order="393">psclk</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_PSEN_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_PSEN_PORT" spirit:order="394">psen</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_PSINCDEC_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_PSINCDEC_PORT" spirit:order="395">psincdec</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_PSDONE_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_PSDONE_PORT" spirit:order="396">psdone</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_CLK_VALID_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLK_VALID_PORT" spirit:order="397">CLK_VALID</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_STATUS_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_STATUS_PORT" spirit:order="398">STATUS</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_CLK_IN_SEL_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLK_IN_SEL_PORT" spirit:order="399">clk_in_sel</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_INPUT_CLK_STOPPED_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_INPUT_CLK_STOPPED_PORT" spirit:order="400">input_clk_stopped</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_CLKFB_STOPPED_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKFB_STOPPED_PORT" spirit:order="401">clkfb_stopped</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_CLKIN1_JITTER_PS</spirit:name> + <spirit:value spirit:format="float" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKIN1_JITTER_PS" spirit:order="402">100.0</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_CLKIN2_JITTER_PS</spirit:name> + <spirit:value spirit:format="float" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKIN2_JITTER_PS" spirit:order="403">100.0</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_PRIMITIVE</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_PRIMITIVE" spirit:order="404">MMCM</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_SS_MODE</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_SS_MODE" spirit:order="405">CENTER_HIGH</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="INTEGER"> + <spirit:name>C_SS_MOD_PERIOD</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_SS_MOD_PERIOD" spirit:order="406">4000</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_SS_MOD_TIME</spirit:name> + <spirit:value spirit:format="float" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_SS_MOD_TIME" spirit:order="406.001">0.004</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="INTEGER"> + <spirit:name>C_HAS_CDDC</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_HAS_CDDC" spirit:order="407">0</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_CDDCDONE_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CDDCDONE_PORT" spirit:order="408">cddcdone</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_CDDCREQ_PORT</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CDDCREQ_PORT" spirit:order="409">cddcreq</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_CLKOUTPHY_MODE</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKOUTPHY_MODE" spirit:order="410">VCO</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="INTEGER"> + <spirit:name>C_ENABLE_CLKOUTPHY</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_ENABLE_CLKOUTPHY" spirit:order="411">0</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="INTEGER"> + <spirit:name>C_INTERFACE_SELECTION</spirit:name> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_INTERFACE_SELECTION" spirit:order="412">0</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="INTEGER"> + <spirit:name>C_S_AXI_ADDR_WIDTH</spirit:name> + <spirit:displayName>C S Axi Addr Width</spirit:displayName> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_S_AXI_ADDR_WIDTH" spirit:order="215" spirit:minimum="2" spirit:maximum="32" spirit:rangeType="long">11</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="INTEGER"> + <spirit:name>C_S_AXI_DATA_WIDTH</spirit:name> + <spirit:displayName>C S Axi Data Width</spirit:displayName> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_S_AXI_DATA_WIDTH" spirit:order="216" spirit:minimum="32" spirit:maximum="128" spirit:rangeType="long">32</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_POWER_REG</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_POWER_REG" spirit:order="409">0000</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_CLKOUT0_1</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKOUT0_1" spirit:order="410">0000</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_CLKOUT0_2</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKOUT0_2" spirit:order="411">0000</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_CLKOUT1_1</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKOUT1_1" spirit:order="410">0000</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_CLKOUT1_2</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKOUT1_2" spirit:order="410">0000</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_CLKOUT2_1</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKOUT2_1" spirit:order="411">0000</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_CLKOUT2_2</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKOUT2_2" spirit:order="411">0000</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_CLKOUT3_1</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKOUT3_1" spirit:order="410">0000</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_CLKOUT3_2</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKOUT3_2" spirit:order="411">0000</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_CLKOUT4_1</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKOUT4_1" spirit:order="410">0000</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_CLKOUT4_2</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKOUT4_2" spirit:order="411">0000</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_CLKOUT5_1</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKOUT5_1" spirit:order="410">0000</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_CLKOUT5_2</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKOUT5_2" spirit:order="411">0000</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_CLKOUT6_1</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKOUT6_1" spirit:order="410">0000</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_CLKOUT6_2</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKOUT6_2" spirit:order="411">0000</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_CLK_OUT1_PORT</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLK_OUT1_PORT" spirit:order="370">clk_out1</spirit:value> + <spirit:name>C_CLKFBOUT_1</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKFBOUT_1" spirit:order="410">0000</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_CLK_OUT2_PORT</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLK_OUT2_PORT" spirit:order="371">clk_out2</spirit:value> + <spirit:name>C_CLKFBOUT_2</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKFBOUT_2" spirit:order="411">0000</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_CLK_OUT3_PORT</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLK_OUT3_PORT" spirit:order="372">clk_out3</spirit:value> + <spirit:name>C_DIVCLK</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_DIVCLK" spirit:order="411">0000</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_CLK_OUT4_PORT</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLK_OUT4_PORT" spirit:order="373">clk_out4</spirit:value> + <spirit:name>C_LOCK_1</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_LOCK_1" spirit:order="411">0000</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_CLK_OUT5_PORT</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLK_OUT5_PORT" spirit:order="374">clk_out5</spirit:value> + <spirit:name>C_LOCK_2</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_LOCK_2" spirit:order="411">0000</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_CLK_OUT6_PORT</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLK_OUT6_PORT" spirit:order="375">clk_out6</spirit:value> + <spirit:name>C_LOCK_3</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_LOCK_3" spirit:order="411">0000</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_CLK_OUT7_PORT</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLK_OUT7_PORT" spirit:order="376">clk_out7</spirit:value> + <spirit:name>C_FILTER_1</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_FILTER_1" spirit:order="411">0000</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_RESET_PORT</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_RESET_PORT" spirit:order="377">reset</spirit:value> + <spirit:name>C_FILTER_2</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_FILTER_2" spirit:order="411">0000</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_LOCKED_PORT</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_LOCKED_PORT" spirit:order="378">locked</spirit:value> + <spirit:name>C_DIVIDE1_AUTO</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_DIVIDE1_AUTO" spirit:order="411">1</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_CLKFB_IN_PORT</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKFB_IN_PORT" spirit:order="379">clkfb_in</spirit:value> + <spirit:name>C_DIVIDE2_AUTO</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_DIVIDE2_AUTO" spirit:order="411">0.5</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_CLKFB_IN_P_PORT</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKFB_IN_P_PORT" spirit:order="380">clkfb_in_p</spirit:value> + <spirit:name>C_DIVIDE3_AUTO</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_DIVIDE3_AUTO" spirit:order="411">8.333333333333334</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_CLKFB_IN_N_PORT</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKFB_IN_N_PORT" spirit:order="381">clkfb_in_n</spirit:value> + <spirit:name>C_DIVIDE4_AUTO</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_DIVIDE4_AUTO" spirit:order="411">2.0</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_CLKFB_OUT_PORT</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKFB_OUT_PORT" spirit:order="382">clkfb_out</spirit:value> + <spirit:name>C_DIVIDE5_AUTO</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_DIVIDE5_AUTO" spirit:order="411">0.16666666666666666</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_CLKFB_OUT_P_PORT</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKFB_OUT_P_PORT" spirit:order="383">clkfb_out_p</spirit:value> + <spirit:name>C_DIVIDE6_AUTO</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_DIVIDE6_AUTO" spirit:order="411">0.16666666666666666</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_CLKFB_OUT_N_PORT</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKFB_OUT_N_PORT" spirit:order="384">clkfb_out_n</spirit:value> + <spirit:name>C_DIVIDE7_AUTO</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_DIVIDE7_AUTO" spirit:order="411">0.16666666666666666</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_POWER_DOWN_PORT</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_POWER_DOWN_PORT" spirit:order="385">power_down</spirit:value> + <spirit:name>C_PLLBUFGCEDIV</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_PLLBUFGCEDIV" spirit:order="411">false</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_DADDR_PORT</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_DADDR_PORT" spirit:order="386">daddr</spirit:value> + <spirit:name>C_MMCMBUFGCEDIV</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_MMCMBUFGCEDIV" spirit:order="411">false</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_DCLK_PORT</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_DCLK_PORT" spirit:order="387">dclk</spirit:value> + <spirit:name>C_PLLBUFGCEDIV1</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_PLLBUFGCEDIV1" spirit:order="411">false</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_DRDY_PORT</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_DRDY_PORT" spirit:order="388">drdy</spirit:value> + <spirit:name>C_PLLBUFGCEDIV2</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_PLLBUFGCEDIV2" spirit:order="411">false</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_DWE_PORT</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_DWE_PORT" spirit:order="389">dwe</spirit:value> + <spirit:name>C_PLLBUFGCEDIV3</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_PLLBUFGCEDIV3" spirit:order="411">false</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_DIN_PORT</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_DIN_PORT" spirit:order="390">din</spirit:value> + <spirit:name>C_PLLBUFGCEDIV4</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_PLLBUFGCEDIV4" spirit:order="411">false</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_DOUT_PORT</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_DOUT_PORT" spirit:order="391">dout</spirit:value> + <spirit:name>C_MMCMBUFGCEDIV1</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_MMCMBUFGCEDIV1" spirit:order="411">false</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_DEN_PORT</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_DEN_PORT" spirit:order="392">den</spirit:value> + <spirit:name>C_MMCMBUFGCEDIV2</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_MMCMBUFGCEDIV2" spirit:order="411">false</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_PSCLK_PORT</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_PSCLK_PORT" spirit:order="393">psclk</spirit:value> + <spirit:name>C_MMCMBUFGCEDIV3</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_MMCMBUFGCEDIV3" spirit:order="411">false</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_PSEN_PORT</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_PSEN_PORT" spirit:order="394">psen</spirit:value> + <spirit:name>C_MMCMBUFGCEDIV4</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_MMCMBUFGCEDIV4" spirit:order="411">false</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_PSINCDEC_PORT</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_PSINCDEC_PORT" spirit:order="395">psincdec</spirit:value> + <spirit:name>C_MMCMBUFGCEDIV5</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_MMCMBUFGCEDIV5" spirit:order="411">false</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_PSDONE_PORT</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_PSDONE_PORT" spirit:order="396">psdone</spirit:value> + <spirit:name>C_MMCMBUFGCEDIV6</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_MMCMBUFGCEDIV6" spirit:order="411">false</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_CLK_VALID_PORT</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLK_VALID_PORT" spirit:order="397">CLK_VALID</spirit:value> + <spirit:name>C_MMCMBUFGCEDIV7</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_MMCMBUFGCEDIV7" spirit:order="411">false</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_STATUS_PORT</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_STATUS_PORT" spirit:order="398">STATUS</spirit:value> + <spirit:name>C_CLKOUT1_MATCHED_ROUTING</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKOUT1_MATCHED_ROUTING" spirit:order="411">false</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_CLK_IN_SEL_PORT</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLK_IN_SEL_PORT" spirit:order="399">clk_in_sel</spirit:value> + <spirit:name>C_CLKOUT2_MATCHED_ROUTING</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKOUT2_MATCHED_ROUTING" spirit:order="411">false</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_INPUT_CLK_STOPPED_PORT</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_INPUT_CLK_STOPPED_PORT" spirit:order="400">input_clk_stopped</spirit:value> + <spirit:name>C_CLKOUT3_MATCHED_ROUTING</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKOUT3_MATCHED_ROUTING" spirit:order="411">false</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_CLKFB_STOPPED_PORT</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKFB_STOPPED_PORT" spirit:order="401">clkfb_stopped</spirit:value> + <spirit:name>C_CLKOUT4_MATCHED_ROUTING</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKOUT4_MATCHED_ROUTING" spirit:order="411">false</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_CLKIN1_JITTER_PS</spirit:name> - <spirit:value spirit:format="float" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKIN1_JITTER_PS" spirit:order="402">100.0</spirit:value> + <spirit:name>C_CLKOUT5_MATCHED_ROUTING</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKOUT5_MATCHED_ROUTING" spirit:order="411">false</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_CLKIN2_JITTER_PS</spirit:name> - <spirit:value spirit:format="float" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKIN2_JITTER_PS" spirit:order="403">100.0</spirit:value> + <spirit:name>C_CLKOUT6_MATCHED_ROUTING</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKOUT6_MATCHED_ROUTING" spirit:order="411">false</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_PRIMITIVE</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_PRIMITIVE" spirit:order="404">MMCM</spirit:value> + <spirit:name>C_CLKOUT7_MATCHED_ROUTING</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKOUT7_MATCHED_ROUTING" spirit:order="411">false</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_SS_MODE</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_SS_MODE" spirit:order="405">CENTER_HIGH</spirit:value> + <spirit:name>C_CLKOUT0_ACTUAL_FREQ</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKOUT0_ACTUAL_FREQ" spirit:order="711">100.00000</spirit:value> </spirit:modelParameter> - <spirit:modelParameter spirit:dataType="INTEGER"> - <spirit:name>C_SS_MOD_PERIOD</spirit:name> - <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_SS_MOD_PERIOD" spirit:order="406">4000</spirit:value> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_CLKOUT1_ACTUAL_FREQ</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKOUT1_ACTUAL_FREQ" spirit:order="712">200.00000</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_SS_MOD_TIME</spirit:name> - <spirit:value spirit:format="float" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_SS_MOD_TIME" spirit:order="406.001">0.004</spirit:value> + <spirit:name>C_CLKOUT2_ACTUAL_FREQ</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKOUT2_ACTUAL_FREQ" spirit:order="713">12.00000</spirit:value> </spirit:modelParameter> - <spirit:modelParameter spirit:dataType="INTEGER"> - <spirit:name>C_HAS_CDDC</spirit:name> - <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_HAS_CDDC" spirit:order="407">0</spirit:value> + <spirit:modelParameter spirit:dataType="STRING"> + <spirit:name>C_CLKOUT3_ACTUAL_FREQ</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKOUT3_ACTUAL_FREQ" spirit:order="714">50.00000</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_CDDCDONE_PORT</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CDDCDONE_PORT" spirit:order="408">cddcdone</spirit:value> + <spirit:name>C_CLKOUT4_ACTUAL_FREQ</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKOUT4_ACTUAL_FREQ" spirit:order="715">100.000</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_CDDCREQ_PORT</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CDDCREQ_PORT" spirit:order="409">cddcreq</spirit:value> + <spirit:name>C_CLKOUT5_ACTUAL_FREQ</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKOUT5_ACTUAL_FREQ" spirit:order="716">100.000</spirit:value> </spirit:modelParameter> <spirit:modelParameter spirit:dataType="STRING"> - <spirit:name>C_CLKOUTPHY_MODE</spirit:name> - <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKOUTPHY_MODE" spirit:order="410">VCO</spirit:value> + <spirit:name>C_CLKOUT6_ACTUAL_FREQ</spirit:name> + <spirit:value spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_CLKOUT6_ACTUAL_FREQ" spirit:order="717">100.000</spirit:value> </spirit:modelParameter> - <spirit:modelParameter spirit:dataType="INTEGER"> - <spirit:name>C_ENABLE_CLKOUTPHY</spirit:name> - <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_ENABLE_CLKOUTPHY" spirit:order="411">0</spirit:value> + <spirit:modelParameter spirit:dataType="REAL"> + <spirit:name>C_M_MAX</spirit:name> + <spirit:value spirit:format="float" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_M_MAX" spirit:order="403">64.000</spirit:value> </spirit:modelParameter> - <spirit:modelParameter spirit:dataType="INTEGER"> - <spirit:name>C_INTERFACE_SELECTION</spirit:name> - <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_INTERFACE_SELECTION" spirit:order="412">0</spirit:value> + <spirit:modelParameter spirit:dataType="REAL"> + <spirit:name>C_M_MIN</spirit:name> + <spirit:value spirit:format="float" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_M_MIN" spirit:order="403">2.000</spirit:value> </spirit:modelParameter> - <spirit:modelParameter spirit:dataType="INTEGER"> - <spirit:name>C_S_AXI_ADDR_WIDTH</spirit:name> - <spirit:displayName>C S Axi Addr Width</spirit:displayName> - <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_S_AXI_ADDR_WIDTH" spirit:order="215" spirit:minimum="2" spirit:maximum="32" spirit:rangeType="long">11</spirit:value> + <spirit:modelParameter spirit:dataType="REAL"> + <spirit:name>C_D_MAX</spirit:name> + <spirit:value spirit:format="float" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_D_MAX" spirit:order="403">80.000</spirit:value> </spirit:modelParameter> - <spirit:modelParameter spirit:dataType="INTEGER"> - <spirit:name>C_S_AXI_DATA_WIDTH</spirit:name> - <spirit:displayName>C S Axi Data Width</spirit:displayName> - <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_S_AXI_DATA_WIDTH" spirit:order="216" spirit:minimum="32" spirit:maximum="128" spirit:rangeType="long">32</spirit:value> + <spirit:modelParameter spirit:dataType="REAL"> + <spirit:name>C_D_MIN</spirit:name> + <spirit:value spirit:format="float" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_D_MIN" spirit:order="403">1.000</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="REAL"> + <spirit:name>C_O_MAX</spirit:name> + <spirit:value spirit:format="float" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_O_MAX" spirit:order="403">128.000</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="REAL"> + <spirit:name>C_O_MIN</spirit:name> + <spirit:value spirit:format="float" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_O_MIN" spirit:order="403">1.000</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="REAL"> + <spirit:name>C_VCO_MIN</spirit:name> + <spirit:value spirit:format="float" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_VCO_MIN" spirit:order="403">600.000</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="REAL"> + <spirit:name>C_VCO_MAX</spirit:name> + <spirit:value spirit:format="float" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_VCO_MAX" spirit:order="403">1200.000</spirit:value> </spirit:modelParameter> </spirit:modelParameters> </spirit:model> <spirit:choices> + <spirit:choice> + <spirit:name>choice_list_1d3de01d</spirit:name> + <spirit:enumeration>WAVEFORM</spirit:enumeration> + <spirit:enumeration>LATENCY</spirit:enumeration> + </spirit:choice> <spirit:choice> <spirit:name>choice_list_876bfc32</spirit:name> <spirit:enumeration>UI</spirit:enumeration> @@ -3769,6 +3947,12 @@ <spirit:enumeration spirit:text="User-Controlled On-Chip">FDBK_ONCHIP</spirit:enumeration> <spirit:enumeration spirit:text="User-Controlled Off-Chip">FDBK_OFFCHIP</spirit:enumeration> </spirit:choice> + <spirit:choice> + <spirit:name>choice_pairs_340369e0</spirit:name> + <spirit:enumeration spirit:text="Custom">Custom</spirit:enumeration> + <spirit:enumeration spirit:text="sys clock">sys_clock</spirit:enumeration> + <spirit:enumeration spirit:text="sys diff clock">sys_diff_clock</spirit:enumeration> + </spirit:choice> <spirit:choice> <spirit:name>choice_pairs_3c2d3ec7</spirit:name> <spirit:enumeration spirit:text="Single-ended">SINGLE</spirit:enumeration> @@ -3789,6 +3973,12 @@ <spirit:enumeration spirit:text="BUFHCE">BUFHCE</spirit:enumeration> <spirit:enumeration spirit:text="No buffer">No_buffer</spirit:enumeration> </spirit:choice> + <spirit:choice> + <spirit:name>choice_pairs_77d3d587</spirit:name> + <spirit:enumeration spirit:text="MMCM">MMCM</spirit:enumeration> + <spirit:enumeration spirit:text="PLL">PLL</spirit:enumeration> + <spirit:enumeration spirit:text="BUFGCE DIV">BUFGCE_DIV</spirit:enumeration> + </spirit:choice> <spirit:choice> <spirit:name>choice_pairs_8b28f1f7</spirit:name> <spirit:enumeration spirit:text="AXI4Lite">Enable_AXI</spirit:enumeration> @@ -3835,10 +4025,59 @@ </spirit:choices> <spirit:fileSets> <spirit:fileSet> - <spirit:name>xilinx_vhdlinstantiationtemplate_view_fileset</spirit:name> + <spirit:name>xilinx_anylanguagebehavioralsimulation_view_fileset</spirit:name> <spirit:file> - <spirit:name>clk_wiz_0.vho</spirit:name> - <spirit:userFileType>vhdlTemplate</spirit:userFileType> + <spirit:name>mmcm_pll_drp_func_7s_mmcm.vh</spirit:name> + <spirit:fileType>verilogSource</spirit:fileType> + <spirit:userFileType>USED_IN_ipstatic</spirit:userFileType> + <spirit:isIncludeFile>true</spirit:isIncludeFile> + <spirit:logicalName>clk_wiz_v6_0_14</spirit:logicalName> + </spirit:file> + <spirit:file> + <spirit:name>mmcm_pll_drp_func_7s_pll.vh</spirit:name> + <spirit:fileType>verilogSource</spirit:fileType> + <spirit:userFileType>USED_IN_ipstatic</spirit:userFileType> + <spirit:isIncludeFile>true</spirit:isIncludeFile> + <spirit:logicalName>clk_wiz_v6_0_14</spirit:logicalName> + </spirit:file> + <spirit:file> + <spirit:name>mmcm_pll_drp_func_us_mmcm.vh</spirit:name> + <spirit:fileType>verilogSource</spirit:fileType> + <spirit:userFileType>USED_IN_ipstatic</spirit:userFileType> + <spirit:isIncludeFile>true</spirit:isIncludeFile> + <spirit:logicalName>clk_wiz_v6_0_14</spirit:logicalName> + </spirit:file> + <spirit:file> + <spirit:name>mmcm_pll_drp_func_us_pll.vh</spirit:name> + <spirit:fileType>verilogSource</spirit:fileType> + <spirit:userFileType>USED_IN_ipstatic</spirit:userFileType> + <spirit:isIncludeFile>true</spirit:isIncludeFile> + <spirit:logicalName>clk_wiz_v6_0_14</spirit:logicalName> + </spirit:file> + <spirit:file> + <spirit:name>mmcm_pll_drp_func_us_plus_pll.vh</spirit:name> + <spirit:fileType>verilogSource</spirit:fileType> + <spirit:userFileType>USED_IN_ipstatic</spirit:userFileType> + <spirit:isIncludeFile>true</spirit:isIncludeFile> + <spirit:logicalName>clk_wiz_v6_0_14</spirit:logicalName> + </spirit:file> + <spirit:file> + <spirit:name>mmcm_pll_drp_func_us_plus_mmcm.vh</spirit:name> + <spirit:fileType>verilogSource</spirit:fileType> + <spirit:userFileType>USED_IN_ipstatic</spirit:userFileType> + <spirit:isIncludeFile>true</spirit:isIncludeFile> + <spirit:logicalName>clk_wiz_v6_0_14</spirit:logicalName> + </spirit:file> + <spirit:file> + <spirit:name>clk_wiz_0_clk_wiz.v</spirit:name> + <spirit:fileType>verilogSource</spirit:fileType> + </spirit:file> + </spirit:fileSet> + <spirit:fileSet> + <spirit:name>xilinx_anylanguagesimulationwrapper_view_fileset</spirit:name> + <spirit:file> + <spirit:name>clk_wiz_0.v</spirit:name> + <spirit:fileType>verilogSource</spirit:fileType> </spirit:file> </spirit:fileSet> <spirit:fileSet> @@ -3859,46 +4098,51 @@ <spirit:userFileType>USED_IN_synthesis</spirit:userFileType> </spirit:file> <spirit:file> - <spirit:name>clk_wiz_0_clk_wiz.v</spirit:name> + <spirit:name>mmcm_pll_drp_func_7s_mmcm.vh</spirit:name> <spirit:fileType>verilogSource</spirit:fileType> + <spirit:isIncludeFile>true</spirit:isIncludeFile> + <spirit:logicalName>clk_wiz_v6_0_14</spirit:logicalName> </spirit:file> - </spirit:fileSet> - <spirit:fileSet> - <spirit:name>xilinx_anylanguagesynthesiswrapper_view_fileset</spirit:name> <spirit:file> - <spirit:name>clk_wiz_0.v</spirit:name> + <spirit:name>mmcm_pll_drp_func_7s_pll.vh</spirit:name> <spirit:fileType>verilogSource</spirit:fileType> + <spirit:isIncludeFile>true</spirit:isIncludeFile> + <spirit:logicalName>clk_wiz_v6_0_14</spirit:logicalName> </spirit:file> - </spirit:fileSet> - <spirit:fileSet> - <spirit:name>xilinx_anylanguagebehavioralsimulation_view_fileset</spirit:name> <spirit:file> - <spirit:name>clk_wiz_0_clk_wiz.v</spirit:name> + <spirit:name>mmcm_pll_drp_func_us_mmcm.vh</spirit:name> <spirit:fileType>verilogSource</spirit:fileType> + <spirit:isIncludeFile>true</spirit:isIncludeFile> + <spirit:logicalName>clk_wiz_v6_0_14</spirit:logicalName> </spirit:file> - </spirit:fileSet> - <spirit:fileSet> - <spirit:name>xilinx_anylanguagesimulationwrapper_view_fileset</spirit:name> <spirit:file> - <spirit:name>clk_wiz_0.v</spirit:name> + <spirit:name>mmcm_pll_drp_func_us_pll.vh</spirit:name> <spirit:fileType>verilogSource</spirit:fileType> + <spirit:isIncludeFile>true</spirit:isIncludeFile> + <spirit:logicalName>clk_wiz_v6_0_14</spirit:logicalName> </spirit:file> - </spirit:fileSet> - <spirit:fileSet> - <spirit:name>xilinx_implementation_view_fileset</spirit:name> <spirit:file> - <spirit:name>clk_wiz_0_board.xdc</spirit:name> - <spirit:userFileType>xdc</spirit:userFileType> - <spirit:userFileType>USED_IN_board</spirit:userFileType> - <spirit:userFileType>USED_IN_implementation</spirit:userFileType> - <spirit:userFileType>USED_IN_synthesis</spirit:userFileType> + <spirit:name>mmcm_pll_drp_func_us_plus_pll.vh</spirit:name> + <spirit:fileType>verilogSource</spirit:fileType> + <spirit:isIncludeFile>true</spirit:isIncludeFile> + <spirit:logicalName>clk_wiz_v6_0_14</spirit:logicalName> + </spirit:file> + <spirit:file> + <spirit:name>mmcm_pll_drp_func_us_plus_mmcm.vh</spirit:name> + <spirit:fileType>verilogSource</spirit:fileType> + <spirit:isIncludeFile>true</spirit:isIncludeFile> + <spirit:logicalName>clk_wiz_v6_0_14</spirit:logicalName> + </spirit:file> + <spirit:file> + <spirit:name>clk_wiz_0_clk_wiz.v</spirit:name> + <spirit:fileType>verilogSource</spirit:fileType> </spirit:file> </spirit:fileSet> <spirit:fileSet> - <spirit:name>xilinx_versioninformation_view_fileset</spirit:name> + <spirit:name>xilinx_anylanguagesynthesiswrapper_view_fileset</spirit:name> <spirit:file> - <spirit:name>doc/clk_wiz_v5_2_changelog.txt</spirit:name> - <spirit:userFileType>text</spirit:userFileType> + <spirit:name>clk_wiz_0.v</spirit:name> + <spirit:fileType>verilogSource</spirit:fileType> </spirit:file> </spirit:fileSet> <spirit:fileSet> @@ -3937,6 +4181,30 @@ <spirit:logicalName>xil_defaultlib</spirit:logicalName> </spirit:file> </spirit:fileSet> + <spirit:fileSet> + <spirit:name>xilinx_implementation_view_fileset</spirit:name> + <spirit:file> + <spirit:name>clk_wiz_0_board.xdc</spirit:name> + <spirit:userFileType>xdc</spirit:userFileType> + <spirit:userFileType>USED_IN_board</spirit:userFileType> + <spirit:userFileType>USED_IN_implementation</spirit:userFileType> + <spirit:userFileType>USED_IN_synthesis</spirit:userFileType> + </spirit:file> + </spirit:fileSet> + <spirit:fileSet> + <spirit:name>xilinx_versioninformation_view_fileset</spirit:name> + <spirit:file> + <spirit:name>doc/clk_wiz_v6_0_changelog.txt</spirit:name> + <spirit:userFileType>text</spirit:userFileType> + </spirit:file> + </spirit:fileSet> + <spirit:fileSet> + <spirit:name>xilinx_vhdlinstantiationtemplate_view_fileset</spirit:name> + <spirit:file> + <spirit:name>clk_wiz_0.vho</spirit:name> + <spirit:userFileType>vhdlTemplate</spirit:userFileType> + </spirit:file> + </spirit:fileSet> </spirit:fileSets> <spirit:description>The Clocking Wizard creates an HDL file (Verilog or VHDL) that contains a clocking circuit customized to the user's clocking requirements.</spirit:description> <spirit:parameters> @@ -3944,6 +4212,76 @@ <spirit:name>Component_Name</spirit:name> <spirit:value spirit:resolve="user" spirit:id="PARAM_VALUE.Component_Name" spirit:order="1">clk_wiz_0</spirit:value> </spirit:parameter> + <spirit:parameter> + <spirit:name>USER_CLK_FREQ0</spirit:name> + <spirit:displayName>User Frequency(MHz)</spirit:displayName> + <spirit:value spirit:format="float" spirit:resolve="user" spirit:id="PARAM_VALUE.USER_CLK_FREQ0" spirit:order="15200" spirit:minimum="1" spirit:maximum="300">100.0</spirit:value> + </spirit:parameter> + <spirit:parameter> + <spirit:name>USER_CLK_FREQ1</spirit:name> + <spirit:displayName>User Frequency(MHz)</spirit:displayName> + <spirit:value spirit:format="float" spirit:resolve="user" spirit:id="PARAM_VALUE.USER_CLK_FREQ1" spirit:order="15200" spirit:minimum="1" spirit:maximum="300">100.0</spirit:value> + </spirit:parameter> + <spirit:parameter> + <spirit:name>USER_CLK_FREQ2</spirit:name> + <spirit:displayName>User Frequency(MHz)</spirit:displayName> + <spirit:value spirit:format="float" spirit:resolve="user" spirit:id="PARAM_VALUE.USER_CLK_FREQ2" spirit:order="15200" spirit:minimum="1" spirit:maximum="300">100.0</spirit:value> + </spirit:parameter> + <spirit:parameter> + <spirit:name>USER_CLK_FREQ3</spirit:name> + <spirit:displayName>User Frequency(MHz)</spirit:displayName> + <spirit:value spirit:format="float" spirit:resolve="user" spirit:id="PARAM_VALUE.USER_CLK_FREQ3" spirit:order="15200" spirit:minimum="1" spirit:maximum="300">100.0</spirit:value> + </spirit:parameter> + <spirit:parameter> + <spirit:name>ENABLE_CLOCK_MONITOR</spirit:name> + <spirit:displayName>Enable Clock Monitoring</spirit:displayName> + <spirit:value spirit:format="bool" spirit:resolve="user" spirit:id="PARAM_VALUE.ENABLE_CLOCK_MONITOR" spirit:order="10.1">false</spirit:value> + </spirit:parameter> + <spirit:parameter> + <spirit:name>OPTIMIZE_CLOCKING_STRUCTURE_EN</spirit:name> + <spirit:displayName>Optimize Clocking Structure</spirit:displayName> + <spirit:value spirit:format="bool" spirit:resolve="user" spirit:id="PARAM_VALUE.OPTIMIZE_CLOCKING_STRUCTURE_EN" spirit:order="10.1">false</spirit:value> + </spirit:parameter> + <spirit:parameter> + <spirit:name>ENABLE_USER_CLOCK0</spirit:name> + <spirit:displayName>User Clock</spirit:displayName> + <spirit:value spirit:format="bool" spirit:resolve="user" spirit:id="PARAM_VALUE.ENABLE_USER_CLOCK0" spirit:order="1090">false</spirit:value> + </spirit:parameter> + <spirit:parameter> + <spirit:name>ENABLE_USER_CLOCK1</spirit:name> + <spirit:displayName>User Clock</spirit:displayName> + <spirit:value spirit:format="bool" spirit:resolve="user" spirit:id="PARAM_VALUE.ENABLE_USER_CLOCK1" spirit:order="1090">false</spirit:value> + </spirit:parameter> + <spirit:parameter> + <spirit:name>ENABLE_USER_CLOCK2</spirit:name> + <spirit:displayName>User Clock</spirit:displayName> + <spirit:value spirit:format="bool" spirit:resolve="user" spirit:id="PARAM_VALUE.ENABLE_USER_CLOCK2" spirit:order="1090">false</spirit:value> + </spirit:parameter> + <spirit:parameter> + <spirit:name>ENABLE_USER_CLOCK3</spirit:name> + <spirit:displayName>User Clock</spirit:displayName> + <spirit:value spirit:format="bool" spirit:resolve="user" spirit:id="PARAM_VALUE.ENABLE_USER_CLOCK3" spirit:order="1090">false</spirit:value> + </spirit:parameter> + <spirit:parameter> + <spirit:name>Enable_PLL0</spirit:name> + <spirit:displayName>User Clock</spirit:displayName> + <spirit:value spirit:format="bool" spirit:resolve="user" spirit:id="PARAM_VALUE.Enable_PLL0" spirit:order="1090">false</spirit:value> + </spirit:parameter> + <spirit:parameter> + <spirit:name>Enable_PLL1</spirit:name> + <spirit:displayName>User Clock</spirit:displayName> + <spirit:value spirit:format="bool" spirit:resolve="user" spirit:id="PARAM_VALUE.Enable_PLL1" spirit:order="1090">false</spirit:value> + </spirit:parameter> + <spirit:parameter> + <spirit:name>REF_CLK_FREQ</spirit:name> + <spirit:displayName>Reference Frequency(MHz)</spirit:displayName> + <spirit:value spirit:format="float" spirit:resolve="user" spirit:id="PARAM_VALUE.REF_CLK_FREQ" spirit:order="15300" spirit:minimum="1" spirit:maximum="300">100.0</spirit:value> + </spirit:parameter> + <spirit:parameter> + <spirit:name>PRECISION</spirit:name> + <spirit:displayName>Tolerance(MHz)</spirit:displayName> + <spirit:value spirit:format="float" spirit:resolve="user" spirit:id="PARAM_VALUE.PRECISION" spirit:order="15400" spirit:minimum="1" spirit:maximum="100">1</spirit:value> + </spirit:parameter> <spirit:parameter> <spirit:name>PRIMITIVE</spirit:name> <spirit:displayName>Primitive</spirit:displayName> @@ -3999,6 +4337,10 @@ <spirit:name>IN_FREQ_UNITS</spirit:name> <spirit:value spirit:resolve="user" spirit:id="PARAM_VALUE.IN_FREQ_UNITS" spirit:choiceRef="choice_pairs_8eea9b32" spirit:order="15" spirit:configGroups="0 NoDisplay">Units_MHz</spirit:value> </spirit:parameter> + <spirit:parameter> + <spirit:name>PHASESHIFT_MODE</spirit:name> + <spirit:value spirit:resolve="user" spirit:id="PARAM_VALUE.PHASESHIFT_MODE" spirit:choiceRef="choice_list_1d3de01d" spirit:order="116" spirit:configGroups="0 NoDisplay">WAVEFORM</spirit:value> + </spirit:parameter> <spirit:parameter> <spirit:name>IN_JITTER_UNITS</spirit:name> <spirit:value spirit:resolve="user" spirit:id="PARAM_VALUE.IN_JITTER_UNITS" spirit:choiceRef="choice_pairs_c5ef7212" spirit:order="16" spirit:configGroups="0 NoDisplay">Units_UI</spirit:value> @@ -4283,6 +4625,34 @@ <spirit:name>USE_MIN_O_JITTER</spirit:name> <spirit:value spirit:format="bool" spirit:resolve="user" spirit:id="PARAM_VALUE.USE_MIN_O_JITTER" spirit:order="84" spirit:configGroups="0 NoDisplay">false</spirit:value> </spirit:parameter> + <spirit:parameter> + <spirit:name>CLKOUT1_MATCHED_ROUTING</spirit:name> + <spirit:value spirit:format="bool" spirit:resolve="user" spirit:id="PARAM_VALUE.CLKOUT1_MATCHED_ROUTING" spirit:order="984" spirit:configGroups="0 NoDisplay">false</spirit:value> + </spirit:parameter> + <spirit:parameter> + <spirit:name>CLKOUT2_MATCHED_ROUTING</spirit:name> + <spirit:value spirit:format="bool" spirit:resolve="user" spirit:id="PARAM_VALUE.CLKOUT2_MATCHED_ROUTING" spirit:order="985" spirit:configGroups="0 NoDisplay">false</spirit:value> + </spirit:parameter> + <spirit:parameter> + <spirit:name>CLKOUT3_MATCHED_ROUTING</spirit:name> + <spirit:value spirit:format="bool" spirit:resolve="user" spirit:id="PARAM_VALUE.CLKOUT3_MATCHED_ROUTING" spirit:order="986" spirit:configGroups="0 NoDisplay">false</spirit:value> + </spirit:parameter> + <spirit:parameter> + <spirit:name>CLKOUT4_MATCHED_ROUTING</spirit:name> + <spirit:value spirit:format="bool" spirit:resolve="user" spirit:id="PARAM_VALUE.CLKOUT4_MATCHED_ROUTING" spirit:order="987" spirit:configGroups="0 NoDisplay">false</spirit:value> + </spirit:parameter> + <spirit:parameter> + <spirit:name>CLKOUT5_MATCHED_ROUTING</spirit:name> + <spirit:value spirit:format="bool" spirit:resolve="user" spirit:id="PARAM_VALUE.CLKOUT5_MATCHED_ROUTING" spirit:order="988" spirit:configGroups="0 NoDisplay">false</spirit:value> + </spirit:parameter> + <spirit:parameter> + <spirit:name>CLKOUT6_MATCHED_ROUTING</spirit:name> + <spirit:value spirit:format="bool" spirit:resolve="user" spirit:id="PARAM_VALUE.CLKOUT6_MATCHED_ROUTING" spirit:order="989" spirit:configGroups="0 NoDisplay">false</spirit:value> + </spirit:parameter> + <spirit:parameter> + <spirit:name>CLKOUT7_MATCHED_ROUTING</spirit:name> + <spirit:value spirit:format="bool" spirit:resolve="user" spirit:id="PARAM_VALUE.CLKOUT7_MATCHED_ROUTING" spirit:order="990" spirit:configGroups="0 NoDisplay">false</spirit:value> + </spirit:parameter> <spirit:parameter> <spirit:name>PRIM_SOURCE</spirit:name> <spirit:value spirit:resolve="user" spirit:id="PARAM_VALUE.PRIM_SOURCE" spirit:choiceRef="choice_pairs_11d71346" spirit:order="14.1" spirit:configGroups="0 NoDisplay">Single_ended_clock_capable_pin</spirit:value> @@ -4445,7 +4815,7 @@ </spirit:parameter> <spirit:parameter> <spirit:name>MMCM_DIVCLK_DIVIDE</spirit:name> - <spirit:value spirit:format="long" spirit:resolve="user" spirit:id="PARAM_VALUE.MMCM_DIVCLK_DIVIDE" spirit:order="124" spirit:configGroups="0 NoDisplay" spirit:minimum="1" spirit:maximum="106" spirit:rangeType="long">1</spirit:value> + <spirit:value spirit:format="long" spirit:resolve="user" spirit:id="PARAM_VALUE.MMCM_DIVCLK_DIVIDE" spirit:order="124" spirit:configGroups="0 NoDisplay">1</spirit:value> </spirit:parameter> <spirit:parameter> <spirit:name>MMCM_BANDWIDTH</spirit:name> @@ -4513,7 +4883,7 @@ </spirit:parameter> <spirit:parameter> <spirit:name>MMCM_CLKOUT1_DIVIDE</spirit:name> - <spirit:value spirit:format="long" spirit:resolve="user" spirit:id="PARAM_VALUE.MMCM_CLKOUT1_DIVIDE" spirit:order="141" spirit:configGroups="0 NoDisplay" spirit:minimum="1" spirit:maximum="128" spirit:rangeType="long">3</spirit:value> + <spirit:value spirit:format="long" spirit:resolve="user" spirit:id="PARAM_VALUE.MMCM_CLKOUT1_DIVIDE" spirit:order="141" spirit:configGroups="0 NoDisplay">3</spirit:value> </spirit:parameter> <spirit:parameter> <spirit:name>MMCM_CLKOUT1_DUTY_CYCLE</spirit:name> @@ -4529,7 +4899,7 @@ </spirit:parameter> <spirit:parameter> <spirit:name>MMCM_CLKOUT2_DIVIDE</spirit:name> - <spirit:value spirit:format="long" spirit:resolve="user" spirit:id="PARAM_VALUE.MMCM_CLKOUT2_DIVIDE" spirit:order="145" spirit:configGroups="0 NoDisplay" spirit:minimum="1" spirit:maximum="128" spirit:rangeType="long">50</spirit:value> + <spirit:value spirit:format="long" spirit:resolve="user" spirit:id="PARAM_VALUE.MMCM_CLKOUT2_DIVIDE" spirit:order="145" spirit:configGroups="0 NoDisplay">50</spirit:value> </spirit:parameter> <spirit:parameter> <spirit:name>MMCM_CLKOUT2_DUTY_CYCLE</spirit:name> @@ -4545,7 +4915,7 @@ </spirit:parameter> <spirit:parameter> <spirit:name>MMCM_CLKOUT3_DIVIDE</spirit:name> - <spirit:value spirit:format="long" spirit:resolve="user" spirit:id="PARAM_VALUE.MMCM_CLKOUT3_DIVIDE" spirit:order="149" spirit:configGroups="0 NoDisplay" spirit:minimum="1" spirit:maximum="128" spirit:rangeType="long">12</spirit:value> + <spirit:value spirit:format="long" spirit:resolve="user" spirit:id="PARAM_VALUE.MMCM_CLKOUT3_DIVIDE" spirit:order="149" spirit:configGroups="0 NoDisplay">12</spirit:value> </spirit:parameter> <spirit:parameter> <spirit:name>MMCM_CLKOUT3_DUTY_CYCLE</spirit:name> @@ -4561,7 +4931,7 @@ </spirit:parameter> <spirit:parameter> <spirit:name>MMCM_CLKOUT4_DIVIDE</spirit:name> - <spirit:value spirit:format="long" spirit:resolve="user" spirit:id="PARAM_VALUE.MMCM_CLKOUT4_DIVIDE" spirit:order="153" spirit:configGroups="0 NoDisplay" spirit:minimum="1" spirit:maximum="128" spirit:rangeType="long">1</spirit:value> + <spirit:value spirit:format="long" spirit:resolve="user" spirit:id="PARAM_VALUE.MMCM_CLKOUT4_DIVIDE" spirit:order="153" spirit:configGroups="0 NoDisplay">1</spirit:value> </spirit:parameter> <spirit:parameter> <spirit:name>MMCM_CLKOUT4_DUTY_CYCLE</spirit:name> @@ -4577,7 +4947,7 @@ </spirit:parameter> <spirit:parameter> <spirit:name>MMCM_CLKOUT5_DIVIDE</spirit:name> - <spirit:value spirit:format="long" spirit:resolve="user" spirit:id="PARAM_VALUE.MMCM_CLKOUT5_DIVIDE" spirit:order="157" spirit:configGroups="0 NoDisplay" spirit:minimum="1" spirit:maximum="128" spirit:rangeType="long">1</spirit:value> + <spirit:value spirit:format="long" spirit:resolve="user" spirit:id="PARAM_VALUE.MMCM_CLKOUT5_DIVIDE" spirit:order="157" spirit:configGroups="0 NoDisplay">1</spirit:value> </spirit:parameter> <spirit:parameter> <spirit:name>MMCM_CLKOUT5_DUTY_CYCLE</spirit:name> @@ -4593,7 +4963,7 @@ </spirit:parameter> <spirit:parameter> <spirit:name>MMCM_CLKOUT6_DIVIDE</spirit:name> - <spirit:value spirit:format="long" spirit:resolve="user" spirit:id="PARAM_VALUE.MMCM_CLKOUT6_DIVIDE" spirit:order="161" spirit:configGroups="0 NoDisplay" spirit:minimum="1" spirit:maximum="128" spirit:rangeType="long">1</spirit:value> + <spirit:value spirit:format="long" spirit:resolve="user" spirit:id="PARAM_VALUE.MMCM_CLKOUT6_DIVIDE" spirit:order="161" spirit:configGroups="0 NoDisplay">1</spirit:value> </spirit:parameter> <spirit:parameter> <spirit:name>MMCM_CLKOUT6_DUTY_CYCLE</spirit:name> @@ -4767,11 +5137,11 @@ </spirit:parameter> <spirit:parameter> <spirit:name>CLK_IN1_BOARD_INTERFACE</spirit:name> - <spirit:value spirit:resolve="user" spirit:id="PARAM_VALUE.CLK_IN1_BOARD_INTERFACE" spirit:choiceRef="choice_pairs_0920eb1b" spirit:order="13.8">Custom</spirit:value> + <spirit:value spirit:resolve="user" spirit:id="PARAM_VALUE.CLK_IN1_BOARD_INTERFACE" spirit:choiceRef="choice_pairs_340369e0" spirit:order="13.8">Custom</spirit:value> </spirit:parameter> <spirit:parameter> <spirit:name>CLK_IN2_BOARD_INTERFACE</spirit:name> - <spirit:value spirit:resolve="user" spirit:id="PARAM_VALUE.CLK_IN2_BOARD_INTERFACE" spirit:choiceRef="choice_pairs_0920eb1b" spirit:order="13.9">Custom</spirit:value> + <spirit:value spirit:resolve="user" spirit:id="PARAM_VALUE.CLK_IN2_BOARD_INTERFACE" spirit:choiceRef="choice_pairs_340369e0" spirit:order="13.9">Custom</spirit:value> </spirit:parameter> <spirit:parameter> <spirit:name>DIFF_CLK_IN1_BOARD_INTERFACE</spirit:name> @@ -4781,6 +5151,10 @@ <spirit:name>DIFF_CLK_IN2_BOARD_INTERFACE</spirit:name> <spirit:value spirit:resolve="user" spirit:id="PARAM_VALUE.DIFF_CLK_IN2_BOARD_INTERFACE" spirit:choiceRef="choice_pairs_0920eb1b" spirit:order="13.2">Custom</spirit:value> </spirit:parameter> + <spirit:parameter> + <spirit:name>AUTO_PRIMITIVE</spirit:name> + <spirit:value spirit:resolve="user" spirit:id="PARAM_VALUE.AUTO_PRIMITIVE" spirit:choiceRef="choice_pairs_77d3d587" spirit:order="13212">MMCM</spirit:value> + </spirit:parameter> <spirit:parameter> <spirit:name>RESET_BOARD_INTERFACE</spirit:name> <spirit:value spirit:resolve="user" spirit:id="PARAM_VALUE.RESET_BOARD_INTERFACE" spirit:choiceRef="choice_list_ac75ef1e" spirit:order="21.4">Custom</spirit:value> @@ -4877,42 +5251,66 @@ </spirit:parameter> <spirit:parameter> <spirit:name>INPUT_MODE</spirit:name> - <spirit:value spirit:resolve="user" spirit:id="PARAM_VALUE.INPUT_MODE" spirit:choiceRef="choice_pairs_f669c2f5" spirit:order="14.4">frequency</spirit:value> + <spirit:value spirit:resolve="user" spirit:id="PARAM_VALUE.INPUT_MODE" spirit:choiceRef="choice_pairs_f669c2f5" spirit:order="7.8">frequency</spirit:value> </spirit:parameter> <spirit:parameter> <spirit:name>INTERFACE_SELECTION</spirit:name> <spirit:value spirit:resolve="user" spirit:id="PARAM_VALUE.INTERFACE_SELECTION" spirit:choiceRef="choice_pairs_8b28f1f7" spirit:order="11.1">Enable_AXI</spirit:value> </spirit:parameter> + <spirit:parameter> + <spirit:name>AXI_DRP</spirit:name> + <spirit:displayName>Write DRP registers</spirit:displayName> + <spirit:value spirit:format="bool" spirit:resolve="user" spirit:id="PARAM_VALUE.AXI_DRP" spirit:order="11.12">false</spirit:value> + </spirit:parameter> <spirit:parameter> <spirit:name>PHASE_DUTY_CONFIG</spirit:name> <spirit:displayName>Phase Duty Cycle Config</spirit:displayName> <spirit:value spirit:format="bool" spirit:resolve="user" spirit:id="PARAM_VALUE.PHASE_DUTY_CONFIG" spirit:order="11.2">false</spirit:value> - <spirit:vendorExtensions> - <xilinx:parameterInfo> - <xilinx:enablement> - <xilinx:isEnabled xilinx:resolve="dependent" xilinx:id="PARAM_ENABLEMENT.PHASE_DUTY_CONFIG">false</xilinx:isEnabled> - </xilinx:enablement> - </xilinx:parameterInfo> - </spirit:vendorExtensions> </spirit:parameter> </spirit:parameters> <spirit:vendorExtensions> <xilinx:coreExtensions> <xilinx:displayName>Clocking Wizard</xilinx:displayName> - <xilinx:coreRevision>0</xilinx:coreRevision> + <xilinx:xpmLibraries> + <xilinx:xpmLibrary>XPM_CDC</xilinx:xpmLibrary> + </xilinx:xpmLibraries> + <xilinx:coreRevision>14</xilinx:coreRevision> <xilinx:configElementInfos> + <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.S_AXI_LITE.ADDR_WIDTH" xilinx:valueSource="auto"/> + <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.S_AXI_LITE.ARUSER_WIDTH" xilinx:valueSource="constant"/> + <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.S_AXI_LITE.AWUSER_WIDTH" xilinx:valueSource="constant"/> + <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.S_AXI_LITE.BUSER_WIDTH" xilinx:valueSource="constant"/> + <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.S_AXI_LITE.DATA_WIDTH" xilinx:valueSource="auto"/> + <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.S_AXI_LITE.HAS_BRESP" xilinx:valueSource="auto"/> + <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.S_AXI_LITE.HAS_BURST" xilinx:valueSource="constant"/> + <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.S_AXI_LITE.HAS_CACHE" xilinx:valueSource="constant"/> + <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.S_AXI_LITE.HAS_LOCK" xilinx:valueSource="constant"/> + <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.S_AXI_LITE.HAS_PROT" xilinx:valueSource="constant"/> + <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.S_AXI_LITE.HAS_QOS" xilinx:valueSource="constant"/> + <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.S_AXI_LITE.HAS_REGION" xilinx:valueSource="constant"/> + <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.S_AXI_LITE.HAS_RRESP" xilinx:valueSource="auto"/> + <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.S_AXI_LITE.HAS_WSTRB" xilinx:valueSource="auto"/> + <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.S_AXI_LITE.ID_WIDTH" xilinx:valueSource="constant"/> + <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.S_AXI_LITE.PROTOCOL" xilinx:valueSource="constant"/> + <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.S_AXI_LITE.RUSER_WIDTH" xilinx:valueSource="constant"/> + <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.S_AXI_LITE.WUSER_WIDTH" xilinx:valueSource="constant"/> <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.CLKOUT1_JITTER" xilinx:valueSource="user"/> <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.CLKOUT1_PHASE_ERROR" xilinx:valueSource="user"/> <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.CLKOUT2_JITTER" xilinx:valueSource="user"/> <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.CLKOUT2_PHASE_ERROR" xilinx:valueSource="user"/> + <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.CLKOUT2_REQUESTED_OUT_FREQ" xilinx:valueSource="user"/> <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.CLKOUT2_USED" xilinx:valueSource="user"/> <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.CLKOUT3_JITTER" xilinx:valueSource="user"/> <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.CLKOUT3_PHASE_ERROR" xilinx:valueSource="user"/> + <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.CLKOUT3_REQUESTED_OUT_FREQ" xilinx:valueSource="user"/> <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.CLKOUT3_USED" xilinx:valueSource="user"/> <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.CLKOUT4_JITTER" xilinx:valueSource="user"/> <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.CLKOUT4_PHASE_ERROR" xilinx:valueSource="user"/> + <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.CLKOUT4_REQUESTED_OUT_FREQ" xilinx:valueSource="user"/> <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.CLKOUT4_USED" xilinx:valueSource="user"/> <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.MMCM_CLKFBOUT_MULT_F" xilinx:valueSource="user"/> + <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.MMCM_CLKIN1_PERIOD" xilinx:valueSource="user"/> + <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.MMCM_CLKIN2_PERIOD" xilinx:valueSource="user"/> <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.MMCM_CLKOUT0_DIVIDE_F" xilinx:valueSource="user"/> <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.MMCM_CLKOUT1_DIVIDE" xilinx:valueSource="user"/> <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.MMCM_CLKOUT2_DIVIDE" xilinx:valueSource="user"/> @@ -4922,12 +5320,12 @@ </xilinx:configElementInfos> </xilinx:coreExtensions> <xilinx:packagingInfo> - <xilinx:xilinxVersion>2015.3</xilinx:xilinxVersion> - <xilinx:checksum xilinx:scope="busInterfaces" xilinx:value="69bff2c8"/> - <xilinx:checksum xilinx:scope="fileGroups" xilinx:value="3a523104"/> - <xilinx:checksum xilinx:scope="ports" xilinx:value="a5d35bf6"/> - <xilinx:checksum xilinx:scope="hdlParameters" xilinx:value="18e8d175"/> - <xilinx:checksum xilinx:scope="parameters" xilinx:value="09870f83"/> + <xilinx:xilinxVersion>2024.1</xilinx:xilinxVersion> + <xilinx:checksum xilinx:scope="busInterfaces" xilinx:value="52494094"/> + <xilinx:checksum xilinx:scope="fileGroups" xilinx:value="f72112df"/> + <xilinx:checksum xilinx:scope="ports" xilinx:value="4f3d3737"/> + <xilinx:checksum xilinx:scope="hdlParameters" xilinx:value="c11c59cd"/> + <xilinx:checksum xilinx:scope="parameters" xilinx:value="63dcade9"/> </xilinx:packagingInfo> </spirit:vendorExtensions> </spirit:component> diff --git a/src/ip/clk_wiz_0/clk_wiz_0_clk_wiz.v b/src/ip/clk_wiz_0/clk_wiz_0_clk_wiz.v index e47643a..eb66c80 100644 --- a/src/ip/clk_wiz_0/clk_wiz_0_clk_wiz.v +++ b/src/ip/clk_wiz_0/clk_wiz_0_clk_wiz.v @@ -1,23 +1,22 @@ + // file: clk_wiz_0.v -// -// (c) Copyright 2008 - 2013 Xilinx, Inc. All rights reserved. -// +// (c) Copyright 2017-2018, 2023 Advanced Micro Devices, Inc. All rights reserved. +// // This file contains confidential and proprietary information -// of Xilinx, Inc. and is protected under U.S. and -// international copyright and other intellectual property -// laws. -// +// of AMD and is protected under U.S. and international copyright +// and other intellectual property laws. +// // DISCLAIMER // This disclaimer is not a license and does not grant any // rights to the materials distributed herewith. Except as // otherwise provided in a valid license issued to you by -// Xilinx, and to the maximum extent permitted by applicable +// AMD, and to the maximum extent permitted by applicable // law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND -// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// WITH ALL FAULTS, AND AMD HEREBY DISCLAIMS ALL WARRANTIES // AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING // BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- // INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and -// (2) Xilinx shall not be liable (whether in contract or tort, +// (2) AMD shall not be liable (whether in contract or tort, // including negligence, or under any other theory of // liability) for any loss or damage of any kind or nature // related to, arising under or in connection with these @@ -26,11 +25,11 @@ // (including loss of data, profits, goodwill, or any type of // loss or damage suffered as a result of any action brought // by a third party) even if such damage or loss was -// reasonably foreseeable or Xilinx had been advised of the +// reasonably foreseeable or AMD had been advised of the // possibility of the same. -// +// // CRITICAL APPLICATIONS -// Xilinx products are not designed or intended to be fail- +// AMD products are not designed or intended to be fail- // safe, or for use in any application requiring fail-safe // performance, such as life-support or safety devices or // systems, Class III medical devices, nuclear facilities, @@ -39,13 +38,12 @@ // injury, or severe property or environmental damage // (individually and collectively, "Critical // Applications"). Customer assumes the sole risk and -// liability of any use of Xilinx products in Critical +// liability of any use of AMD products in Critical // Applications, subject only to applicable laws and // regulations governing limitations on product liability. -// +// // THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS // PART OF THIS FILE AT ALL TIMES. -// //---------------------------------------------------------------------------- // User entered comments //---------------------------------------------------------------------------- @@ -55,10 +53,10 @@ // Output Output Phase Duty Cycle Pk-to-Pk Phase // Clock Freq (MHz) (degrees) (%) Jitter (ps) Error (ps) //---------------------------------------------------------------------------- -// CLK_OUT1___100.000______0.000______50.0______151.366____132.063 -// CLK_OUT2___200.000______0.000______50.0______132.221____132.063 -// CLK_OUT3____12.000______0.000______50.0______231.952____132.063 -// CLK_OUT4____50.000______0.000______50.0______174.353____132.063 +// clk_out1__100.00000______0.000______50.0______151.366____132.063 +// clk_out2__200.00000______0.000______50.0______132.221____132.063 +// clk_out3__12.00000______0.000______50.0______231.952____132.063 +// clk_out4__50.00000______0.000______50.0______174.353____132.063 // //---------------------------------------------------------------------------- // Input Clock Freq (MHz) Input Jitter (UI) @@ -68,8 +66,8 @@ `timescale 1ps/1ps module clk_wiz_0_clk_wiz + (// Clock in ports - input clk_in1, // Clock out ports output clk_out1, output clk_out2, @@ -77,23 +75,35 @@ module clk_wiz_0_clk_wiz output clk_out4, // Status and control signals input reset, - output locked + output locked, + input clk_in1 ); - // Input buffering //------------------------------------ +wire clk_in1_clk_wiz_0; +wire clk_in2_clk_wiz_0; IBUF clkin1_ibufg (.O (clk_in1_clk_wiz_0), .I (clk_in1)); + // Clocking PRIMITIVE //------------------------------------ // Instantiation of the MMCM PRIMITIVE // * Unused inputs are tied off // * Unused outputs are labeled unused + + wire clk_out1_clk_wiz_0; + wire clk_out2_clk_wiz_0; + wire clk_out3_clk_wiz_0; + wire clk_out4_clk_wiz_0; + wire clk_out5_clk_wiz_0; + wire clk_out6_clk_wiz_0; + wire clk_out7_clk_wiz_0; + wire [15:0] do_unused; wire drdy_unused; wire psdone_unused; @@ -179,12 +189,12 @@ module clk_wiz_0_clk_wiz .CLKFBSTOPPED (clkfbstopped_unused), .PWRDWN (1'b0), .RST (reset_high)); - assign reset_high = reset; assign locked = locked_int; - - // Output buffering +// Clock Monitor clock assigning +//-------------------------------------- + // Output buffering //----------------------------------- BUFG clkf_buf @@ -193,6 +203,9 @@ module clk_wiz_0_clk_wiz + + + BUFG clkout1_buf (.O (clk_out1), .I (clk_out1_clk_wiz_0)); diff --git a/src/ip/clk_wiz_0/clk_wiz_0_ooc.xdc b/src/ip/clk_wiz_0/clk_wiz_0_ooc.xdc index 41c79d7..773dcfa 100644 --- a/src/ip/clk_wiz_0/clk_wiz_0_ooc.xdc +++ b/src/ip/clk_wiz_0/clk_wiz_0_ooc.xdc @@ -1,23 +1,22 @@ + # file: clk_wiz_0_ooc.xdc -# -# (c) Copyright 2008 - 2013 Xilinx, Inc. All rights reserved. -# +# (c) Copyright 2017-2018, 2023 Advanced Micro Devices, Inc. All rights reserved. +# # This file contains confidential and proprietary information -# of Xilinx, Inc. and is protected under U.S. and -# international copyright and other intellectual property -# laws. -# +# of AMD and is protected under U.S. and international copyright +# and other intellectual property laws. +# # DISCLAIMER # This disclaimer is not a license and does not grant any # rights to the materials distributed herewith. Except as # otherwise provided in a valid license issued to you by -# Xilinx, and to the maximum extent permitted by applicable +# AMD, and to the maximum extent permitted by applicable # law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND -# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# WITH ALL FAULTS, AND AMD HEREBY DISCLAIMS ALL WARRANTIES # AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING # BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- # INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and -# (2) Xilinx shall not be liable (whether in contract or tort, +# (2) AMD shall not be liable (whether in contract or tort, # including negligence, or under any other theory of # liability) for any loss or damage of any kind or nature # related to, arising under or in connection with these @@ -26,11 +25,11 @@ # (including loss of data, profits, goodwill, or any type of # loss or damage suffered as a result of any action brought # by a third party) even if such damage or loss was -# reasonably foreseeable or Xilinx had been advised of the +# reasonably foreseeable or AMD had been advised of the # possibility of the same. -# +# # CRITICAL APPLICATIONS -# Xilinx products are not designed or intended to be fail- +# AMD products are not designed or intended to be fail- # safe, or for use in any application requiring fail-safe # performance, such as life-support or safety devices or # systems, Class III medical devices, nuclear facilities, @@ -39,13 +38,12 @@ # injury, or severe property or environmental damage # (individually and collectively, "Critical # Applications"). Customer assumes the sole risk and -# liability of any use of Xilinx products in Critical +# liability of any use of AMD products in Critical # Applications, subject only to applicable laws and # regulations governing limitations on product liability. -# +# # THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS # PART OF THIS FILE AT ALL TIMES. -# ################# #DEFAULT CLOCK CONSTRAINTS @@ -54,3 +52,4 @@ # Clock Period Constraints # ############################################################ #create_clock -period 10.0 [get_ports clk_in1] + diff --git a/src/ip/clk_wiz_0/clk_wiz_0_sim_netlist.v b/src/ip/clk_wiz_0/clk_wiz_0_sim_netlist.v index e0a8184..65edb90 100644 --- a/src/ip/clk_wiz_0/clk_wiz_0_sim_netlist.v +++ b/src/ip/clk_wiz_0/clk_wiz_0_sim_netlist.v @@ -1,9 +1,11 @@ -// Copyright 1986-2015 Xilinx, Inc. All Rights Reserved. +// Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. +// Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. // -------------------------------------------------------------------------------- -// Tool Version: Vivado v.2015.3 (win64) Build 1368829 Mon Sep 28 20:06:43 MDT 2015 -// Date : Thu Jan 21 17:13:26 2016 -// Host : WK86 running 64-bit Service Pack 1 (build 7601) -// Command : write_verilog -force -mode funcsim C:/Work/Github/Working/Looper/src/ip/clk_wiz_0/clk_wiz_0_sim_netlist.v +// Tool Version: Vivado v.2024.1 (lin64) Build 5076996 Wed May 22 18:36:09 MDT 2024 +// Date : Wed Feb 26 11:54:28 2025 +// Host : fl-tp-br-604 running 64-bit Ubuntu 24.04.1 LTS +// Command : write_verilog -force -mode funcsim +// /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0_sim_netlist.v // Design : clk_wiz_0 // Purpose : This verilog netlist is a functional simulation representation of the design and should not be modified // or synthesized. This netlist cannot be used for SDF annotated simulation. @@ -11,23 +13,22 @@ // -------------------------------------------------------------------------------- `timescale 1 ps / 1 ps -(* CORE_GENERATION_INFO = "clk_wiz_0,clk_wiz_v5_2_0,{component_name=clk_wiz_0,use_phase_alignment=true,use_min_o_jitter=false,use_max_i_jitter=false,use_dyn_phase_shift=false,use_inclk_switchover=false,use_dyn_reconfig=false,enable_axi=0,feedback_source=FDBK_AUTO,PRIMITIVE=MMCM,num_out_clk=4,clkin1_period=10.0,clkin2_period=10.0,use_power_down=false,use_reset=true,use_locked=true,use_inclk_stopped=false,feedback_type=SINGLE,CLOCK_MGR_TYPE=NA,manual_override=false}" *) (* NotValidForBitStream *) module clk_wiz_0 - (clk_in1, - clk_out1, + (clk_out1, clk_out2, clk_out3, clk_out4, reset, - locked); - input clk_in1; + locked, + clk_in1); output clk_out1; output clk_out2; output clk_out3; output clk_out4; input reset; output locked; + input clk_in1; (* IBUF_LOW_PWR *) wire clk_in1; wire clk_out1; @@ -37,7 +38,7 @@ module clk_wiz_0 wire locked; wire reset; - clk_wiz_0_clk_wiz_0_clk_wiz inst + clk_wiz_0_clk_wiz inst (.clk_in1(clk_in1), .clk_out1(clk_out1), .clk_out2(clk_out2), @@ -47,22 +48,21 @@ module clk_wiz_0 .reset(reset)); endmodule -(* ORIG_REF_NAME = "clk_wiz_0_clk_wiz" *) -module clk_wiz_0_clk_wiz_0_clk_wiz - (clk_in1, - clk_out1, +module clk_wiz_0_clk_wiz + (clk_out1, clk_out2, clk_out3, clk_out4, reset, - locked); - input clk_in1; + locked, + clk_in1); output clk_out1; output clk_out2; output clk_out3; output clk_out4; input reset; output locked; + input clk_in1; wire clk_in1; wire clk_in1_clk_wiz_0; @@ -214,12 +214,15 @@ module glbl (); parameter ROC_WIDTH = 100000; parameter TOC_WIDTH = 0; + parameter GRES_WIDTH = 10000; + parameter GRES_START = 10000; //-------- STARTUP Globals -------------- wire GSR; wire GTS; wire GWE; wire PRLD; + wire GRESTORE; tri1 p_up_tmp; tri (weak1, strong0) PLL_LOCKG = p_up_tmp; @@ -232,6 +235,7 @@ module glbl (); reg GSR_int; reg GTS_int; reg PRLD_int; + reg GRESTORE_int; //-------- JTAG Globals -------------- wire JTAG_TDO_GLBL; @@ -256,9 +260,10 @@ module glbl (); reg JTAG_USER_TDO3_GLBL = 1'bz; reg JTAG_USER_TDO4_GLBL = 1'bz; - assign (weak1, weak0) GSR = GSR_int; - assign (weak1, weak0) GTS = GTS_int; + assign (strong1, weak0) GSR = GSR_int; + assign (strong1, weak0) GTS = GTS_int; assign (weak1, weak0) PRLD = PRLD_int; + assign (strong1, weak0) GRESTORE = GRESTORE_int; initial begin GSR_int = 1'b1; @@ -274,5 +279,13 @@ module glbl (); GTS_int = 1'b0; end + initial begin + GRESTORE_int = 1'b0; + #(GRES_START); + GRESTORE_int = 1'b1; + #(GRES_WIDTH); + GRESTORE_int = 1'b0; + end + endmodule `endif diff --git a/src/ip/clk_wiz_0/clk_wiz_0_sim_netlist.vhdl b/src/ip/clk_wiz_0/clk_wiz_0_sim_netlist.vhdl index 84ae83d..1ca8b0e 100644 --- a/src/ip/clk_wiz_0/clk_wiz_0_sim_netlist.vhdl +++ b/src/ip/clk_wiz_0/clk_wiz_0_sim_netlist.vhdl @@ -1,9 +1,11 @@ --- Copyright 1986-2015 Xilinx, Inc. All Rights Reserved. +-- Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. +-- Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. -- -------------------------------------------------------------------------------- --- Tool Version: Vivado v.2015.3 (win64) Build 1368829 Mon Sep 28 20:06:43 MDT 2015 --- Date : Thu Jan 21 17:13:26 2016 --- Host : WK86 running 64-bit Service Pack 1 (build 7601) --- Command : write_vhdl -force -mode funcsim C:/Work/Github/Working/Looper/src/ip/clk_wiz_0/clk_wiz_0_sim_netlist.vhdl +-- Tool Version: Vivado v.2024.1 (lin64) Build 5076996 Wed May 22 18:36:09 MDT 2024 +-- Date : Wed Feb 26 11:54:28 2025 +-- Host : fl-tp-br-604 running 64-bit Ubuntu 24.04.1 LTS +-- Command : write_vhdl -force -mode funcsim +-- /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0_sim_netlist.vhdl -- Design : clk_wiz_0 -- Purpose : This VHDL netlist is a functional simulation representation of the design and should not be modified or -- synthesized. This netlist cannot be used for SDF annotated simulation. @@ -13,21 +15,19 @@ library IEEE; use IEEE.STD_LOGIC_1164.ALL; library UNISIM; use UNISIM.VCOMPONENTS.ALL; -entity clk_wiz_0_clk_wiz_0_clk_wiz is +entity clk_wiz_0_clk_wiz is port ( - clk_in1 : in STD_LOGIC; clk_out1 : out STD_LOGIC; clk_out2 : out STD_LOGIC; clk_out3 : out STD_LOGIC; clk_out4 : out STD_LOGIC; reset : in STD_LOGIC; - locked : out STD_LOGIC + locked : out STD_LOGIC; + clk_in1 : in STD_LOGIC ); - attribute ORIG_REF_NAME : string; - attribute ORIG_REF_NAME of clk_wiz_0_clk_wiz_0_clk_wiz : entity is "clk_wiz_0_clk_wiz"; -end clk_wiz_0_clk_wiz_0_clk_wiz; +end clk_wiz_0_clk_wiz; -architecture STRUCTURE of clk_wiz_0_clk_wiz_0_clk_wiz is +architecture STRUCTURE of clk_wiz_0_clk_wiz is signal clk_in1_clk_wiz_0 : STD_LOGIC; signal clk_out1_clk_wiz_0 : STD_LOGIC; signal clk_out2_clk_wiz_0 : STD_LOGIC; @@ -189,23 +189,21 @@ library UNISIM; use UNISIM.VCOMPONENTS.ALL; entity clk_wiz_0 is port ( - clk_in1 : in STD_LOGIC; clk_out1 : out STD_LOGIC; clk_out2 : out STD_LOGIC; clk_out3 : out STD_LOGIC; clk_out4 : out STD_LOGIC; reset : in STD_LOGIC; - locked : out STD_LOGIC + locked : out STD_LOGIC; + clk_in1 : in STD_LOGIC ); attribute NotValidForBitStream : boolean; attribute NotValidForBitStream of clk_wiz_0 : entity is true; - attribute CORE_GENERATION_INFO : string; - attribute CORE_GENERATION_INFO of clk_wiz_0 : entity is "clk_wiz_0,clk_wiz_v5_2_0,{component_name=clk_wiz_0,use_phase_alignment=true,use_min_o_jitter=false,use_max_i_jitter=false,use_dyn_phase_shift=false,use_inclk_switchover=false,use_dyn_reconfig=false,enable_axi=0,feedback_source=FDBK_AUTO,PRIMITIVE=MMCM,num_out_clk=4,clkin1_period=10.0,clkin2_period=10.0,use_power_down=false,use_reset=true,use_locked=true,use_inclk_stopped=false,feedback_type=SINGLE,CLOCK_MGR_TYPE=NA,manual_override=false}"; end clk_wiz_0; architecture STRUCTURE of clk_wiz_0 is begin -inst: entity work.clk_wiz_0_clk_wiz_0_clk_wiz +inst: entity work.clk_wiz_0_clk_wiz port map ( clk_in1 => clk_in1, clk_out1 => clk_out1, diff --git a/src/ip/clk_wiz_0/clk_wiz_0_stub.v b/src/ip/clk_wiz_0/clk_wiz_0_stub.v index 3e730b7..88530c7 100644 --- a/src/ip/clk_wiz_0/clk_wiz_0_stub.v +++ b/src/ip/clk_wiz_0/clk_wiz_0_stub.v @@ -1,9 +1,11 @@ -// Copyright 1986-2015 Xilinx, Inc. All Rights Reserved. +// Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. +// Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. // -------------------------------------------------------------------------------- -// Tool Version: Vivado v.2015.3 (win64) Build 1368829 Mon Sep 28 20:06:43 MDT 2015 -// Date : Thu Jan 21 17:13:26 2016 -// Host : WK86 running 64-bit Service Pack 1 (build 7601) -// Command : write_verilog -force -mode synth_stub C:/Work/Github/Working/Looper/src/ip/clk_wiz_0/clk_wiz_0_stub.v +// Tool Version: Vivado v.2024.1 (lin64) Build 5076996 Wed May 22 18:36:09 MDT 2024 +// Date : Wed Feb 26 11:54:28 2025 +// Host : fl-tp-br-604 running 64-bit Ubuntu 24.04.1 LTS +// Command : write_verilog -force -mode synth_stub +// /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0_stub.v // Design : clk_wiz_0 // Purpose : Stub declaration of top-level module interface // Device : xc7a200tsbg484-1 @@ -12,13 +14,18 @@ // This empty module with port declaration file causes synthesis tools to infer a black box for IP. // The synthesis directives are for Synopsys Synplify support to prevent IO buffer insertion. // Please paste the declaration into a Verilog source file or add the file as an additional source. -module clk_wiz_0(clk_in1, clk_out1, clk_out2, clk_out3, clk_out4, reset, locked) -/* synthesis syn_black_box black_box_pad_pin="clk_in1,clk_out1,clk_out2,clk_out3,clk_out4,reset,locked" */; - input clk_in1; - output clk_out1; - output clk_out2; - output clk_out3; - output clk_out4; +module clk_wiz_0(clk_out1, clk_out2, clk_out3, clk_out4, reset, + locked, clk_in1) +/* synthesis syn_black_box black_box_pad_pin="reset,locked,clk_in1" */ +/* synthesis syn_force_seq_prim="clk_out1" */ +/* synthesis syn_force_seq_prim="clk_out2" */ +/* synthesis syn_force_seq_prim="clk_out3" */ +/* synthesis syn_force_seq_prim="clk_out4" */; + output clk_out1 /* synthesis syn_isclock = 1 */; + output clk_out2 /* synthesis syn_isclock = 1 */; + output clk_out3 /* synthesis syn_isclock = 1 */; + output clk_out4 /* synthesis syn_isclock = 1 */; input reset; output locked; + input clk_in1; endmodule diff --git a/src/ip/clk_wiz_0/clk_wiz_0_stub.vhdl b/src/ip/clk_wiz_0/clk_wiz_0_stub.vhdl index 262c691..04dfc6c 100644 --- a/src/ip/clk_wiz_0/clk_wiz_0_stub.vhdl +++ b/src/ip/clk_wiz_0/clk_wiz_0_stub.vhdl @@ -1,9 +1,11 @@ --- Copyright 1986-2015 Xilinx, Inc. All Rights Reserved. +-- Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. +-- Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. -- -------------------------------------------------------------------------------- --- Tool Version: Vivado v.2015.3 (win64) Build 1368829 Mon Sep 28 20:06:43 MDT 2015 --- Date : Thu Jan 21 17:13:26 2016 --- Host : WK86 running 64-bit Service Pack 1 (build 7601) --- Command : write_vhdl -force -mode synth_stub C:/Work/Github/Working/Looper/src/ip/clk_wiz_0/clk_wiz_0_stub.vhdl +-- Tool Version: Vivado v.2024.1 (lin64) Build 5076996 Wed May 22 18:36:09 MDT 2024 +-- Date : Wed Feb 26 11:54:28 2025 +-- Host : fl-tp-br-604 running 64-bit Ubuntu 24.04.1 LTS +-- Command : write_vhdl -force -mode synth_stub +-- /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/src/ip/clk_wiz_0/clk_wiz_0_stub.vhdl -- Design : clk_wiz_0 -- Purpose : Stub declaration of top-level module interface -- Device : xc7a200tsbg484-1 @@ -13,13 +15,13 @@ use IEEE.STD_LOGIC_1164.ALL; entity clk_wiz_0 is Port ( - clk_in1 : in STD_LOGIC; clk_out1 : out STD_LOGIC; clk_out2 : out STD_LOGIC; clk_out3 : out STD_LOGIC; clk_out4 : out STD_LOGIC; reset : in STD_LOGIC; - locked : out STD_LOGIC + locked : out STD_LOGIC; + clk_in1 : in STD_LOGIC ); end clk_wiz_0; @@ -28,6 +30,6 @@ architecture stub of clk_wiz_0 is attribute syn_black_box : boolean; attribute black_box_pad_pin : string; attribute syn_black_box of stub : architecture is true; -attribute black_box_pad_pin of stub : architecture is "clk_in1,clk_out1,clk_out2,clk_out3,clk_out4,reset,locked"; +attribute black_box_pad_pin of stub : architecture is "clk_out1,clk_out2,clk_out3,clk_out4,reset,locked,clk_in1"; begin end; diff --git a/src/ip/clk_wiz_0/doc/clk_wiz_v5_2_changelog.txt b/src/ip/clk_wiz_0/doc/clk_wiz_v5_2_changelog.txt deleted file mode 100644 index c88739c..0000000 --- a/src/ip/clk_wiz_0/doc/clk_wiz_v5_2_changelog.txt +++ /dev/null @@ -1,115 +0,0 @@ -2015.3: - * Version 5.2 - * IP revision number added to HDL module, library, and include file names, to support designs with both locked and upgraded IP instances - * Port Renaming tab is hidden in the GUI in IP Integrator as this feature is not supported - * Phase alignment feature is removed for ultrascale PLL as primitve has limited capabilities of supporting this feature - * When clocking wizard is targetted on a board part, the frequency values that gets propagated to primary and secondary clocks are displayed in floating number format - * Example design and simulation files are delivered in verilog only - -2015.2.1: - * Version 5.1 (Rev. 6) - * No changes - -2015.2: - * Version 5.1 (Rev. 6) - * No changes - -2015.1: - * Version 5.1 (Rev. 6) - * Updated mmcm_pll_filter_lookup and mmcm_pll_lock_lookup functions in the header file for 7-Series and UltraScale devices - * Supported devices and production status are now determined automatically, to simplify support for future devices - -2014.4.1: - * Version 5.1 (Rev. 5) - * No changes - -2014.4: - * Version 5.1 (Rev. 5) - * Internal device family change, no functional changes - * updates related to the source selection based on board interface for zed board - -2014.3: - * Version 5.1 (Rev. 4) - * Option added to enable dynamic phase and duty cycle for resource optimization in AXI4-Lite interface - -2014.2: - * Version 5.1 (Rev. 3) - * Updated for AXI4-Lite interface locked status register address and bit mapping to align with the pg065 - -2014.1: - * Version 5.1 (Rev. 2) - * Updated to use inverted output CLKOUTB 0-3 of Clocking Primitive based on requested 180 phase w.r.t. previous clock - * Internal device family name change, no functional changes - -2013.4: - * Version 5.1 (Rev. 1) - * Added support for Ultrascale devices - * Updated Board Flow GUI to select the clock interfaces - * Fixed issue with Stub file parameter error for BUFR output driver - -2013.3: - * Version 5.1 - * Added AXI4-Lite interface to dynamically reconfigure MMCM/PLL - * Improved safe clock logic to remove glitches on clock outputs for odd multiples of input clock frequencies - * Fixed precision issues between displayed and actual frequencies - * Added tool tips to GUI - * Added Jitter and Phase error values to IP properties - * Added support for Cadence IES and Synopsys VCS simulators - * Reduced warnings in synthesis and simulation - * Enhanced support for IP Integrator - -2013.2: - * Version 5.0 (Rev. 1) - * Fixed issue with clock constraints for multiple instances of clocking wizard - * Updated Life-Cycle status of devices - -2013.1: - * Version 5.0 - * Lower case ports for Verilog - * Added Safe Clock Startup and Clock Sequencing - -(c) Copyright 2008 - 2015 Xilinx, Inc. All rights reserved. - -This file contains confidential and proprietary information -of Xilinx, Inc. and is protected under U.S. and -international copyright and other intellectual property -laws. - -DISCLAIMER -This disclaimer is not a license and does not grant any -rights to the materials distributed herewith. Except as -otherwise provided in a valid license issued to you by -Xilinx, and to the maximum extent permitted by applicable -law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND -WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES -AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING -BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- -INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and -(2) Xilinx shall not be liable (whether in contract or tort, -including negligence, or under any other theory of -liability) for any loss or damage of any kind or nature -related to, arising under or in connection with these -materials, including for any direct, or any indirect, -special, incidental, or consequential loss or damage -(including loss of data, profits, goodwill, or any type of -loss or damage suffered as a result of any action brought -by a third party) even if such damage or loss was -reasonably foreseeable or Xilinx had been advised of the -possibility of the same. - -CRITICAL APPLICATIONS -Xilinx products are not designed or intended to be fail- -safe, or for use in any application requiring fail-safe -performance, such as life-support or safety devices or -systems, Class III medical devices, nuclear facilities, -applications related to the deployment of airbags, or any -other applications that could lead to death, personal -injury, or severe property or environmental damage -(individually and collectively, "Critical -Applications"). Customer assumes the sole risk and -liability of any use of Xilinx products in Critical -Applications, subject only to applicable laws and -regulations governing limitations on product liability. - -THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS -PART OF THIS FILE AT ALL TIMES. diff --git a/src/ip/clk_wiz_0/doc/clk_wiz_v6_0_changelog.txt b/src/ip/clk_wiz_0/doc/clk_wiz_v6_0_changelog.txt new file mode 100755 index 0000000..7c91ba6 --- /dev/null +++ b/src/ip/clk_wiz_0/doc/clk_wiz_v6_0_changelog.txt @@ -0,0 +1,323 @@ +2024.1: + * Version 6.0 (Rev. 14) + * General: IP packaging adjustments to address warnings from IP Packager integrity check + +2023.2.2: + * Version 6.0 (Rev. 13) + * No changes + +2023.2.1: + * Version 6.0 (Rev. 13) + * No changes + +2023.2: + * Version 6.0 (Rev. 13) + * Bug Fix: CR Fixes + * Other: CR Fixes + +2023.1.2: + * Version 6.0 (Rev. 12) + * No changes + +2023.1.1: + * Version 6.0 (Rev. 12) + * No changes + +2023.1: + * Version 6.0 (Rev. 12) + * Bug Fix: CR Fixes + * Other: CR Fixes + +2022.2.2: + * Version 6.0 (Rev. 11) + * No changes + +2022.2.1: + * Version 6.0 (Rev. 11) + * No changes + +2022.2: + * Version 6.0 (Rev. 11) + * Bug Fix: CR Fixes + * Other: CR Fixes + +2022.1.2: + * Version 6.0 (Rev. 10) + * No changes + +2022.1.1: + * Version 6.0 (Rev. 10) + * No changes + +2022.1: + * Version 6.0 (Rev. 10) + * Bug Fix: CR Fixes + * Other: CR Fixes + +2021.2.2: + * Version 6.0 (Rev. 9) + * No changes + +2021.2.1: + * Version 6.0 (Rev. 9) + * No changes + +2021.2: + * Version 6.0 (Rev. 9) + * Bug Fix: CR Fixes + * Other: CR Fixes + +2021.1.1: + * Version 6.0 (Rev. 8) + * No changes + +2021.1: + * Version 6.0 (Rev. 8) + * Bug Fix: Internal GUI fixes + * Other: CR Fixes + +2020.3: + * Version 6.0 (Rev. 7) + * Bug Fix: Internal GUI fixes + * Other: CR Fixes + +2020.2.2: + * Version 6.0 (Rev. 6) + * No changes + +2020.2.1: + * Version 6.0 (Rev. 6) + * No changes + +2020.2: + * Version 6.0 (Rev. 6) + * Bug Fix: Internal GUI fixes + * Other: CR Fixes + +2020.1.1: + * Version 6.0 (Rev. 5) + * No changes + +2020.1: + * Version 6.0 (Rev. 5) + * Bug Fix: Internal GUI fixes + * Other: CR Fixes + +2019.2.2: + * Version 6.0 (Rev. 4) + * No changes + +2019.2.1: + * Version 6.0 (Rev. 4) + * No changes + +2019.2: + * Version 6.0 (Rev. 4) + * Bug Fix: Internal GUI fixes + * Other: CR Fixes + +2019.1.3: + * Version 6.0 (Rev. 3) + * No changes + +2019.1.2: + * Version 6.0 (Rev. 3) + * No changes + +2019.1.1: + * Version 6.0 (Rev. 3) + * No changes + +2019.1: + * Version 6.0 (Rev. 3) + * Bug Fix: Internal GUI fixes + * Other: New family support added + +2018.3.1: + * Version 6.0 (Rev. 2) + * No changes + +2018.3: + * Version 6.0 (Rev. 2) + * Bug Fix: Made input source independent for primary and secondary clock + * Other: New family support added + +2018.2: + * Version 6.0 (Rev. 1) + * Bug Fix: Removed vco freq check when Primitive is None + * Other: New family support added + +2018.1: + * Version 6.0 + * Bug Fix: Bug fixes in Dynamic Reconfiguration feature and Write DRP feature + * Bug Fix: Bug fixes for connection issue for s_axi_aresetn pin in IPI + * Feature Enhancement: The default value of USE_PHASE_ALIGMENT is updated to false for UltraScale and UltraScale+ devices. Phase Alignment feature uses extra clock routes in UltraScale and UltraScale+ designs when MMCMs are used. These routing resources are wasted when user do not understand when phase alignment is really needed. Now, implementation tools can use these extra clock routing resources for high fanout signals. + * Feature Enhancement: A column "Max. freq of buffer" is added in the Output Clock table which shows the maximum frequency that the selected output buffer can support + * Other: DRCs added for invalid input values in Override mode + +2017.4: + * Version 5.4 (Rev. 3) + * Bug Fix: Internal GUI issues are fixed for COMPENSATION mode as INTERNAL + * Bug Fix: Fixed issue in dynamic reconfiguration of fractional values of M in MMCME3, MMCME4 + +2017.3: + * Version 5.4 (Rev. 2) + * General: Internal GUI changes. No effect on the customer design. Added support for aspartan7 devices + +2017.2: + * Version 5.4 (Rev. 1) + * General: Internal GUI changes. No effect on the customer design. + +2017.1: + * Version 5.4 + * Port Change: Minor version upgrade. CLR pins are added to the pin list when selected buffer is BUFGCEDIV for ultrascale and ultrascale plus devices. + * Other: Added support for new zynq ultrascale plus devices. + +2016.4: + * Version 5.3 (Rev. 3) + * Bug Fix: Internal GUI issues are fixed. + +2016.3: + * Version 5.3 (Rev. 2) + * Feature Enhancement: Added new option "Auto" under PRIMITIVE selection for ultrascale and above devices. This option allows the Wizard to instantiate appropriate primitive for the user inputs. + * Feature Enhancement: Added Matched Routing Option for better timing solutions. + * Feature Enhancement: Options 'Buffer' and 'Buffer_with_CE' are added to the buffer selection list. + * Other: Source HDL files are concatenated into a single file to speed up synthesis and simulation. No changes required by the user + * Other: Added support for Spartan7 devices. + +2016.2: + * Version 5.3 (Rev. 1) + * Internal register bit update, no effect on customer designs. + +2016.1: + * Version 5.3 + * Added Clock Monitor Feature as part of clocking wizard + * DRP registers can be directly written through AXI without resource utilization + * Changes to HDL library management to support Vivado IP simulation library + +2015.4.2: + * Version 5.2 (Rev. 1) + * No changes + +2015.4.1: + * Version 5.2 (Rev. 1) + * No changes + +2015.4: + * Version 5.2 (Rev. 1) + * Internal device family change, no functional changes + +2015.3: + * Version 5.2 + * IP revision number added to HDL module, library, and include file names, to support designs with both locked and upgraded IP instances + * Port Renaming tab is hidden in the GUI in IP Integrator as this feature is not supported + * Phase alignment feature is removed for ultrascale PLL as primitve has limited capabilities of supporting this feature + * When clocking wizard is targetted on a board part, the frequency values that gets propagated to primary and secondary clocks are displayed in floating number format + * Example design and simulation files are delivered in verilog only + +2015.2.1: + * Version 5.1 (Rev. 6) + * No changes + +2015.2: + * Version 5.1 (Rev. 6) + * No changes + +2015.1: + * Version 5.1 (Rev. 6) + * Updated mmcm_pll_filter_lookup and mmcm_pll_lock_lookup functions in the header file for 7-Series and UltraScale devices + * Supported devices and production status are now determined automatically, to simplify support for future devices + +2014.4.1: + * Version 5.1 (Rev. 5) + * No changes + +2014.4: + * Version 5.1 (Rev. 5) + * Internal device family change, no functional changes + * updates related to the source selection based on board interface for zed board + +2014.3: + * Version 5.1 (Rev. 4) + * Option added to enable dynamic phase and duty cycle for resource optimization in AXI4-Lite interface + +2014.2: + * Version 5.1 (Rev. 3) + * Updated for AXI4-Lite interface locked status register address and bit mapping to align with the pg065 + +2014.1: + * Version 5.1 (Rev. 2) + * Updated to use inverted output CLKOUTB 0-3 of Clocking Primitive based on requested 180 phase w.r.t. previous clock + * Internal device family name change, no functional changes + +2013.4: + * Version 5.1 (Rev. 1) + * Added support for Ultrascale devices + * Updated Board Flow GUI to select the clock interfaces + * Fixed issue with Stub file parameter error for BUFR output driver + +2013.3: + * Version 5.1 + * Added AXI4-Lite interface to dynamically reconfigure MMCM/PLL + * Improved safe clock logic to remove glitches on clock outputs for odd multiples of input clock frequencies + * Fixed precision issues between displayed and actual frequencies + * Added tool tips to GUI + * Added Jitter and Phase error values to IP properties + * Added support for Cadence IES and Synopsys VCS simulators + * Reduced warnings in synthesis and simulation + * Enhanced support for IP Integrator + +2013.2: + * Version 5.0 (Rev. 1) + * Fixed issue with clock constraints for multiple instances of clocking wizard + * Updated Life-Cycle status of devices + +2013.1: + * Version 5.0 + * Lower case ports for Verilog + * Added Safe Clock Startup and Clock Sequencing + +(c) Copyright 2008 - 2024 Advanced Micro Devices, Inc. All rights reserved. + +This file contains confidential and proprietary information +of AMD and is protected under U.S. and international copyright +and other intellectual property laws. + +DISCLAIMER +This disclaimer is not a license and does not grant any +rights to the materials distributed herewith. Except as +otherwise provided in a valid license issued to you by +AMD, and to the maximum extent permitted by applicable +law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +WITH ALL FAULTS, AND AMD HEREBY DISCLAIMS ALL WARRANTIES +AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +(2) AMD shall not be liable (whether in contract or tort, +including negligence, or under any other theory of +liability) for any loss or damage of any kind or nature +related to, arising under or in connection with these +materials, including for any direct, or any indirect, +special, incidental, or consequential loss or damage +(including loss of data, profits, goodwill, or any type of +loss or damage suffered as a result of any action brought +by a third party) even if such damage or loss was +reasonably foreseeable or AMD had been advised of the +possibility of the same. + +CRITICAL APPLICATIONS +AMD products are not designed or intended to be fail- +safe, or for use in any application requiring fail-safe +performance, such as life-support or safety devices or +systems, Class III medical devices, nuclear facilities, +applications related to the deployment of airbags, or any +other applications that could lead to death, personal +injury, or severe property or environmental damage +(individually and collectively, "Critical +Applications"). Customer assumes the sole risk and +liability of any use of AMD products in Critical +Applications, subject only to applicable laws and +regulations governing limitations on product liability. + +THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +PART OF THIS FILE AT ALL TIMES. diff --git a/src/ip/clk_wiz_0/mmcm_pll_drp_func_7s_mmcm.vh b/src/ip/clk_wiz_0/mmcm_pll_drp_func_7s_mmcm.vh new file mode 100755 index 0000000..6c4981a --- /dev/null +++ b/src/ip/clk_wiz_0/mmcm_pll_drp_func_7s_mmcm.vh @@ -0,0 +1,680 @@ +// (c) Copyright 2009-2010, 2023 Advanced Micro Devices, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of AMD and is protected under U.S. and international copyright +// and other intellectual property laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// AMD, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND AMD HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) AMD shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or AMD had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// AMD products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of AMD products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +//////////////////////////////////////////////////////////// +// +/////////////////////////////////////////////////////////////////////////////// + +// These are user functions that should not be modified. Changes to the defines +// or code within the functions may alter the accuracy of the calculations. + +// Define debug to provide extra messages durring elaboration +//`define DEBUG 1 + +// FRAC_PRECISION describes the width of the fractional portion of the fixed +// point numbers. These should not be modified, they are for development +// only +`define FRAC_PRECISION 10 +// FIXED_WIDTH describes the total size for fixed point calculations(int+frac). +// Warning: L.50 and below will not calculate properly with FIXED_WIDTHs +// greater than 32 +`define FIXED_WIDTH 32 + +// This function takes a fixed point number and rounds it to the nearest +// fractional precision bit. +function [`FIXED_WIDTH:1] round_frac + ( + // Input is (FIXED_WIDTH-FRAC_PRECISION).FRAC_PRECISION fixed point number + input [`FIXED_WIDTH:1] decimal, + + // This describes the precision of the fraction, for example a value + // of 1 would modify the fractional so that instead of being a .16 + // fractional, it would be a .1 (rounded to the nearest 0.5 in turn) + input [`FIXED_WIDTH:1] precision + ); + + begin + + `ifdef DEBUG + $display("round_frac - decimal: %h, precision: %h", decimal, precision); + `endif + // If the fractional precision bit is high then round up + if( decimal[(`FRAC_PRECISION-precision)] == 1'b1) begin + round_frac = decimal + (1'b1 << (`FRAC_PRECISION-precision)); + end else begin + round_frac = decimal; + end + `ifdef DEBUG + $display("round_frac: %h", round_frac); + `endif + end +endfunction + +// This function calculates high_time, low_time, w_edge, and no_count +// of a non-fractional counter based on the divide and duty cycle +// +// NOTE: high_time and low_time are returned as integers between 0 and 63 +// inclusive. 64 should equal 6'b000000 (in other words it is okay to +// ignore the overflow) +function [13:0] mmcm_pll_divider + ( + input [7:0] divide, // Max divide is 128 + input [31:0] duty_cycle // Duty cycle is multiplied by 100,000 + ); + + reg [`FIXED_WIDTH:1] duty_cycle_fix; + + // High/Low time is initially calculated with a wider integer to prevent a + // calculation error when it overflows to 64. + reg [6:0] high_time; + reg [6:0] low_time; + reg w_edge; + reg no_count; + + reg [`FIXED_WIDTH:1] temp; + + begin + // Duty Cycle must be between 0 and 1,000 + if(duty_cycle <=0 || duty_cycle >= 100000) begin +`ifndef SYNTHESIS + $display("ERROR: duty_cycle: %d is invalid", duty_cycle); + `endif + $finish; + end + + // Convert to FIXED_WIDTH-FRAC_PRECISION.FRAC_PRECISION fixed point + duty_cycle_fix = (duty_cycle << `FRAC_PRECISION) / 100_000; + + `ifdef DEBUG + $display("duty_cycle_fix: %h", duty_cycle_fix); + `endif + + // If the divide is 1 nothing needs to be set except the no_count bit. + // Other values are dummies + if(divide == 7'h01) begin + high_time = 7'h01; + w_edge = 1'b0; + low_time = 7'h01; + no_count = 1'b1; + end else begin + temp = round_frac(duty_cycle_fix*divide, 1); + + // comes from above round_frac + high_time = temp[`FRAC_PRECISION+7:`FRAC_PRECISION+1]; + // If the duty cycle * divide rounded is .5 or greater then this bit + // is set. + w_edge = temp[`FRAC_PRECISION]; // comes from round_frac + + // If the high time comes out to 0, it needs to be set to at least 1 + // and w_edge set to 0 + if(high_time == 7'h00) begin + high_time = 7'h01; + w_edge = 1'b0; + end + + if(high_time == divide) begin + high_time = divide - 1; + w_edge = 1'b1; + end + + // Calculate low_time based on the divide setting and set no_count to + // 0 as it is only used when divide is 1. + low_time = divide - high_time; + no_count = 1'b0; + end + + // Set the return value. + mmcm_pll_divider = {w_edge,no_count,high_time[5:0],low_time[5:0]}; + end +endfunction + +// This function calculates mx, delay_time, and phase_mux +// of a non-fractional counter based on the divide and phase +// +// NOTE: The only valid value for the MX bits is 2'b00 to ensure the coarse mux +// is used. +function [10:0] mmcm_pll_phase + ( + // divide must be an integer (use fractional if not) + // assumed that divide already checked to be valid + input [7:0] divide, // Max divide is 128 + + // Phase is given in degrees (-360,000 to 360,000) + input signed [31:0] phase + ); + + reg [`FIXED_WIDTH:1] phase_in_cycles; + reg [`FIXED_WIDTH:1] phase_fixed; + reg [1:0] mx; + reg [5:0] delay_time; + reg [2:0] phase_mux; + + reg [`FIXED_WIDTH:1] temp; + + begin +`ifdef DEBUG + $display("mmcm_pll_phase-divide:%d,phase:%d", + divide, phase); +`endif + + if ((phase < -360000) || (phase > 360000)) begin +`ifndef SYNTHESIS + $display("ERROR: phase of $phase is not between -360000 and 360000"); + `endif + $finish; + end + + // If phase is less than 0, convert it to a positive phase shift + // Convert to (FIXED_WIDTH-FRAC_PRECISION).FRAC_PRECISION fixed point + if(phase < 0) begin + phase_fixed = ( (phase + 360000) << `FRAC_PRECISION ) / 1000; + end else begin + phase_fixed = ( phase << `FRAC_PRECISION ) / 1000; + end + + // Put phase in terms of decimal number of vco clock cycles + phase_in_cycles = ( phase_fixed * divide ) / 360; + +`ifdef DEBUG + $display("phase_in_cycles: %h", phase_in_cycles); +`endif + + + temp = round_frac(phase_in_cycles, 3); + + // set mx to 2'b00 that the phase mux from the VCO is enabled + mx = 2'b00; + phase_mux = temp[`FRAC_PRECISION:`FRAC_PRECISION-2]; + delay_time = temp[`FRAC_PRECISION+6:`FRAC_PRECISION+1]; + + `ifdef DEBUG + $display("temp: %h", temp); + `endif + + // Setup the return value + mmcm_pll_phase={mx, phase_mux, delay_time}; + end +endfunction + +// This function takes the divide value and outputs the necessary lock values +function [39:0] mmcm_pll_lock_lookup + ( + input [6:0] divide // Max divide is 64 + ); + + reg [2559:0] lookup; + + begin + lookup = { + // This table is composed of: + // LockRefDly_LockFBDly_LockCnt_LockSatHigh_UnlockCnt + 40'b00110_00110_1111101000_1111101001_0000000001, + 40'b00110_00110_1111101000_1111101001_0000000001, + 40'b01000_01000_1111101000_1111101001_0000000001, + 40'b01011_01011_1111101000_1111101001_0000000001, + 40'b01110_01110_1111101000_1111101001_0000000001, + 40'b10001_10001_1111101000_1111101001_0000000001, + 40'b10011_10011_1111101000_1111101001_0000000001, + 40'b10110_10110_1111101000_1111101001_0000000001, + 40'b11001_11001_1111101000_1111101001_0000000001, + 40'b11100_11100_1111101000_1111101001_0000000001, + 40'b11111_11111_1110000100_1111101001_0000000001, + 40'b11111_11111_1100111001_1111101001_0000000001, + 40'b11111_11111_1011101110_1111101001_0000000001, + 40'b11111_11111_1010111100_1111101001_0000000001, + 40'b11111_11111_1010001010_1111101001_0000000001, + 40'b11111_11111_1001110001_1111101001_0000000001, + 40'b11111_11111_1000111111_1111101001_0000000001, + 40'b11111_11111_1000100110_1111101001_0000000001, + 40'b11111_11111_1000001101_1111101001_0000000001, + 40'b11111_11111_0111110100_1111101001_0000000001, + 40'b11111_11111_0111011011_1111101001_0000000001, + 40'b11111_11111_0111000010_1111101001_0000000001, + 40'b11111_11111_0110101001_1111101001_0000000001, + 40'b11111_11111_0110010000_1111101001_0000000001, + 40'b11111_11111_0110010000_1111101001_0000000001, + 40'b11111_11111_0101110111_1111101001_0000000001, + 40'b11111_11111_0101011110_1111101001_0000000001, + 40'b11111_11111_0101011110_1111101001_0000000001, + 40'b11111_11111_0101000101_1111101001_0000000001, + 40'b11111_11111_0101000101_1111101001_0000000001, + 40'b11111_11111_0100101100_1111101001_0000000001, + 40'b11111_11111_0100101100_1111101001_0000000001, + 40'b11111_11111_0100101100_1111101001_0000000001, + 40'b11111_11111_0100010011_1111101001_0000000001, + 40'b11111_11111_0100010011_1111101001_0000000001, + 40'b11111_11111_0100010011_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001 + }; + + // Set lookup_entry with the explicit bits from lookup with a part select + mmcm_pll_lock_lookup = lookup[ ((64-divide)*40) +: 40]; + `ifdef DEBUG + $display("lock_lookup: %b", mmcm_pll_lock_lookup); + `endif + end +endfunction + +// This function takes the divide value and the bandwidth setting of the MMCM +// and outputs the digital filter settings necessary. +function [9:0] mmcm_pll_filter_lookup + ( + input [6:0] divide, // Max divide is 64 + input [8*9:0] BANDWIDTH + ); + + reg [639:0] lookup_low; + reg [639:0] lookup_high; + + reg [9:0] lookup_entry; + + begin + lookup_low = { + // CP_RES_LFHF + 10'b0010_1111_00, + 10'b0010_1111_00, + 10'b0010_1111_00, + 10'b0010_1111_00, + 10'b0010_0111_00, + 10'b0010_1011_00, + 10'b0010_1101_00, + 10'b0010_0011_00, + 10'b0010_0101_00, + 10'b0010_0101_00, + 10'b0010_1001_00, + 10'b0010_1110_00, + 10'b0010_1110_00, + 10'b0010_1110_00, + 10'b0010_1110_00, + 10'b0010_0001_00, + 10'b0010_0001_00, + 10'b0010_0001_00, + 10'b0010_0110_00, + 10'b0010_0110_00, + 10'b0010_0110_00, + 10'b0010_0110_00, + 10'b0010_0110_00, + 10'b0010_0110_00, + 10'b0010_0110_00, + 10'b0010_1010_00, + 10'b0010_1010_00, + 10'b0010_1010_00, + 10'b0010_1010_00, + 10'b0010_1010_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00 + }; + + lookup_high = { + // CP_RES_LFHF + 10'b0010_1111_00, + 10'b0100_1111_00, + 10'b0101_1011_00, + 10'b0111_0111_00, + 10'b1101_0111_00, + 10'b1110_1011_00, + 10'b1110_1101_00, + 10'b1111_0011_00, + 10'b1110_0101_00, + 10'b1111_0101_00, + 10'b1111_1001_00, + 10'b1101_0001_00, + 10'b1111_1001_00, + 10'b1111_1001_00, + 10'b1111_1001_00, + 10'b1111_1001_00, + 10'b1111_0101_00, + 10'b1111_0101_00, + 10'b1100_0001_00, + 10'b1100_0001_00, + 10'b1100_0001_00, + 10'b0101_1100_00, + 10'b0101_1100_00, + 10'b0101_1100_00, + 10'b0101_1100_00, + 10'b0011_0100_00, + 10'b0011_0100_00, + 10'b0011_0100_00, + 10'b0011_0100_00, + 10'b0011_0100_00, + 10'b0011_0100_00, + 10'b0011_0100_00, + 10'b0011_0100_00, + 10'b0011_0100_00, + 10'b0011_0100_00, + 10'b0011_0100_00, + 10'b0011_0100_00, + 10'b0011_0100_00, + 10'b0011_0100_00, + 10'b0011_0100_00, + 10'b0011_0100_00, + 10'b0010_1000_00, + 10'b0010_1000_00, + 10'b0010_1000_00, + 10'b0010_1000_00, + 10'b0010_1000_00, + 10'b0111_0001_00, + 10'b0111_0001_00, + 10'b0100_1100_00, + 10'b0100_1100_00, + 10'b0100_1100_00, + 10'b0100_1100_00, + 10'b0110_0001_00, + 10'b0110_0001_00, + 10'b0101_0110_00, + 10'b0101_0110_00, + 10'b0101_0110_00, + 10'b0010_0100_00, + 10'b0010_0100_00, + 10'b0010_0100_00, + 10'b0010_0100_00, + 10'b0100_1010_00, + 10'b0011_1100_00, + 10'b0011_1100_00 + }; + + // Set lookup_entry with the explicit bits from lookup with a part select + if(BANDWIDTH == "LOW") begin + // Low Bandwidth + mmcm_pll_filter_lookup = lookup_low[ ((64-divide)*10) +: 10]; + end else begin + // High or optimized bandwidth + mmcm_pll_filter_lookup = lookup_high[ ((64-divide)*10) +: 10]; + end + + `ifdef DEBUG + $display("filter_lookup: %b", mmcm_pll_filter_lookup); + `endif + end +endfunction + +// This function takes in the divide, phase, and duty cycle +// setting to calculate the upper and lower counter registers. +function [37:0] mmcm_pll_count_calc + ( + input [7:0] divide, // Max divide is 128 + input signed [31:0] phase, + input [31:0] duty_cycle // Multiplied by 100,000 + ); + + reg [13:0] div_calc; + reg [16:0] phase_calc; + + begin + `ifdef DEBUG + $display("mmcm_pll_count_calc- divide:%h, phase:%d, duty_cycle:%d", + divide, phase, duty_cycle); + `endif + + // w_edge[13], no_count[12], high_time[11:6], low_time[5:0] + div_calc = mmcm_pll_divider(divide, duty_cycle); + // mx[10:9], pm[8:6], dt[5:0] + phase_calc = mmcm_pll_phase(divide, phase); + + // Return value is the upper and lower address of counter + // Upper address is: + // RESERVED [31:26] + // MX [25:24] + // EDGE [23] + // NOCOUNT [22] + // DELAY_TIME [21:16] + // Lower Address is: + // PHASE_MUX [15:13] + // RESERVED [12] + // HIGH_TIME [11:6] + // LOW_TIME [5:0] + + `ifdef DEBUG + $display("div:%d dc:%d phase:%d ht:%d lt:%d ed:%d nc:%d mx:%d dt:%d pm:%d", + divide, duty_cycle, phase, div_calc[11:6], div_calc[5:0], + div_calc[13], div_calc[12], + phase_calc[16:15], phase_calc[5:0], phase_calc[14:12]); + `endif + + mmcm_pll_count_calc = + { + // Upper Address + 6'h00, phase_calc[10:9], div_calc[13:12], phase_calc[5:0], + // Lower Address + phase_calc[8:6], 1'b0, div_calc[11:0] + }; + end +endfunction + + +// This function takes in the divide, phase, and duty cycle +// setting to calculate the upper and lower counter registers. +// for fractional multiply/divide functions. +// +// +function [37:0] mmcm_frac_count_calc + ( + input [7:0] divide, // Max divide is 128 + input signed [31:0] phase, + input [31:0] duty_cycle, // Multiplied by 1,000 + input [9:0] frac // Multiplied by 1000 + ); + + //Required for fractional divide calculations + reg [7:0] lt_frac; + reg [7:0] ht_frac; + + reg /*[7:0]*/ wf_fall_frac; + reg /*[7:0]*/ wf_rise_frac; + + reg [31:0] a; + reg [7:0] pm_rise_frac_filtered ; + reg [7:0] pm_fall_frac_filtered ; + reg [7:0] clkout0_divide_int; + reg [2:0] clkout0_divide_frac; + reg [7:0] even_part_high; + reg [7:0] even_part_low; + + reg [7:0] odd; + reg [7:0] odd_and_frac; + + reg [7:0] pm_fall; + reg [7:0] pm_rise; + reg [7:0] dt; + reg [7:0] dt_int; + reg [63:0] dt_calc; + + reg [7:0] pm_rise_frac; + reg [7:0] pm_fall_frac; + + reg [31:0] a_per_in_octets; + reg [31:0] a_phase_in_cycles; + + parameter precision = 0.125; + + reg [31:0] phase_fixed; // changed to 31:0 from 32:1 jt 5/2/11 + reg [31: 0] phase_pos; + reg [31: 0] phase_vco; + reg [31:0] temp;// changed to 31:0 from 32:1 jt 5/2/11 + reg [13:0] div_calc; + reg [16:0] phase_calc; + + begin + `ifdef DEBUG + $display("mmcm_frac_count_calc- divide:%h, phase:%d, duty_cycle:%d", + divide, phase, duty_cycle); + `endif + + //convert phase to fixed + if ((phase < -360000) || (phase > 360000)) begin +`ifndef SYNTHESIS + $display("ERROR: phase of $phase is not between -360000 and 360000"); + `endif + $finish; + end + + + // Return value is + // Transfer data + // RESERVED [37:36] + // FRAC_TIME [35:33] + // FRAC_WF_FALL [32] + // Upper address is: + // RESERVED [31:26] + // MX [25:24] + // EDGE [23] + // NOCOUNT [22] + // DELAY_TIME [21:16] + // Lower Address is: + // PHASE_MUX [15:13] + // RESERVED [12] + // HIGH_TIME [11:6] + // LOW_TIME [5:0] + + + + clkout0_divide_frac = frac / 125; + clkout0_divide_int = divide; + + even_part_high = clkout0_divide_int >> 1;//$rtoi(clkout0_divide_int / 2); + even_part_low = even_part_high; + + odd = clkout0_divide_int - even_part_high - even_part_low; + odd_and_frac = (8*odd) + clkout0_divide_frac; + + lt_frac = even_part_high - (odd_and_frac <= 9);//IF(odd_and_frac>9,even_part_high, even_part_high - 1) + ht_frac = even_part_low - (odd_and_frac <= 8);//IF(odd_and_frac>8,even_part_low, even_part_low- 1) + + pm_fall = {odd[6:0],2'b00} + {6'h00, clkout0_divide_frac[2:1]}; // using >> instead of clkout0_divide_frac / 2 + pm_rise = 0; //0 + + wf_fall_frac = ((odd_and_frac >=2) && (odd_and_frac <=9)) || ((clkout0_divide_frac == 1) && (clkout0_divide_int == 2));//CRS610807 + wf_rise_frac = (odd_and_frac >=1) && (odd_and_frac <=8);//IF(odd_and_frac>=1,IF(odd_and_frac <= 8,1,0),0) + + + + //Calculate phase in fractional cycles + a_per_in_octets = (8 * divide) + (frac / 125) ; + a_phase_in_cycles = (phase+10) * a_per_in_octets / 360000 ;//Adding 1 due to rounding errors + pm_rise_frac = (a_phase_in_cycles[7:0] ==8'h00)?8'h00:a_phase_in_cycles[7:0] - {a_phase_in_cycles[7:3],3'b000}; + + dt_calc = ((phase+10) * a_per_in_octets / 8 )/360000 ;//TRUNC(phase* divide / 360); //or_simply (a_per_in_octets / 8) + dt = dt_calc[7:0]; + + pm_rise_frac_filtered = (pm_rise_frac >=8) ? (pm_rise_frac ) - 8: pm_rise_frac ; //((phase_fixed * (divide + frac / 1000)) / 360) - {pm_rise_frac[7:3],3'b000};//$rtoi(clkout0_phase * clkout0_divide / 45);//a; + + dt_int = dt + (& pm_rise_frac[7:4]); //IF(pm_rise_overwriting>7,dt+1,dt) + pm_fall_frac = pm_fall + pm_rise_frac; + pm_fall_frac_filtered = pm_fall + pm_rise_frac - {pm_fall_frac[7:3], 3'b000}; + + div_calc = mmcm_pll_divider(divide, duty_cycle); //Use to determine edge[7], no count[6] + phase_calc = mmcm_pll_phase(divide, phase);// returns{mx[1:0], phase_mux[2:0], delay_time[5:0]} + + mmcm_frac_count_calc[37:0] = + { 2'b00, pm_fall_frac_filtered[2:0], wf_fall_frac, + 1'b0, clkout0_divide_frac[2:0], 1'b1, wf_rise_frac, phase_calc[10:9], div_calc[13:12], dt[5:0], + pm_rise_frac_filtered[2], pm_rise_frac_filtered[1], pm_rise_frac_filtered[0], 1'b0, ht_frac[5:0], lt_frac[5:0] + } ; + + `ifdef DEBUG + $display("-%d.%d p%d>> :DADDR_9_15 frac30to28.frac_en.wf_r_frac.dt:%b%d%d_%b:DADDR_7_13 pm_f_frac_filtered_29to27.wf_f_frac_26:%b%d:DADDR_8_14.pm_r_frac_filt_15to13.ht_frac.lt_frac:%b%b%b:", divide, frac, phase, clkout0_divide_frac, 1, wf_rise_frac, dt, pm_fall_frac_filtered, wf_fall_frac, pm_rise_frac_filtered, ht_frac, lt_frac); + `endif + + end +endfunction + diff --git a/src/ip/clk_wiz_0/mmcm_pll_drp_func_7s_pll.vh b/src/ip/clk_wiz_0/mmcm_pll_drp_func_7s_pll.vh new file mode 100755 index 0000000..b662a3e --- /dev/null +++ b/src/ip/clk_wiz_0/mmcm_pll_drp_func_7s_pll.vh @@ -0,0 +1,542 @@ +// (c) Copyright 2009-2010, 2023 Advanced Micro Devices, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of AMD and is protected under U.S. and international copyright +// and other intellectual property laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// AMD, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND AMD HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) AMD shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or AMD had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// AMD products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of AMD products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +//////////////////////////////////////////////////////////// +// +/////////////////////////////////////////////////////////////////////////////// + +// These are user functions that should not be modified. Changes to the defines +// or code within the functions may alter the accuracy of the calculations. + +// Define debug to provide extra messages durring elaboration +//`define DEBUG 1 + +// FRAC_PRECISION describes the width of the fractional portion of the fixed +// point numbers. These should not be modified, they are for development +// only +`define FRAC_PRECISION 10 +// FIXED_WIDTH describes the total size for fixed point calculations(int+frac). +// Warning: L.50 and below will not calculate properly with FIXED_WIDTHs +// greater than 32 +`define FIXED_WIDTH 32 + +// This function takes a fixed point number and rounds it to the nearest +// fractional precision bit. +function [`FIXED_WIDTH:1] round_frac + ( + // Input is (FIXED_WIDTH-FRAC_PRECISION).FRAC_PRECISION fixed point number + input [`FIXED_WIDTH:1] decimal, + + // This describes the precision of the fraction, for example a value + // of 1 would modify the fractional so that instead of being a .16 + // fractional, it would be a .1 (rounded to the nearest 0.5 in turn) + input [`FIXED_WIDTH:1] precision + ); + + begin + +`ifdef DEBUG + $display("round_frac - decimal: %h, precision: %h", decimal, precision); +`endif + // If the fractional precision bit is high then round up + if( decimal[(`FRAC_PRECISION-precision)] == 1'b1) begin + round_frac = decimal + (1'b1 << (`FRAC_PRECISION-precision)); + end else begin + round_frac = decimal; + end +`ifdef DEBUG + $display("round_frac: %h", round_frac); +`endif + end +endfunction + +// This function calculates high_time, low_time, w_edge, and no_count +// of a non-fractional counter based on the divide and duty cycle +// +// NOTE: high_time and low_time are returned as integers between 0 and 63 +// inclusive. 64 should equal 6'b000000 (in other words it is okay to +// ignore the overflow) +function [13:0] mmcm_pll_divider + ( + input [7:0] divide, // Max divide is 128 + input [31:0] duty_cycle // Duty cycle is multiplied by 100,000 + ); + + reg [`FIXED_WIDTH:1] duty_cycle_fix; + + // High/Low time is initially calculated with a wider integer to prevent a + // calculation error when it overflows to 64. + reg [6:0] high_time; + reg [6:0] low_time; + reg w_edge; + reg no_count; + + reg [`FIXED_WIDTH:1] temp; + + begin + // Duty Cycle must be between 0 and 1,000 + if(duty_cycle <=0 || duty_cycle >= 100000) begin +`ifndef SYNTHESIS + $display("ERROR: duty_cycle: %d is invalid", duty_cycle); + `endif + $finish; + end + + // Convert to FIXED_WIDTH-FRAC_PRECISION.FRAC_PRECISION fixed point + duty_cycle_fix = (duty_cycle << `FRAC_PRECISION) / 100_000; + +`ifdef DEBUG + $display("duty_cycle_fix: %h", duty_cycle_fix); +`endif + + // If the divide is 1 nothing needs to be set except the no_count bit. + // Other values are dummies + if(divide == 7'h01) begin + high_time = 7'h01; + w_edge = 1'b0; + low_time = 7'h01; + no_count = 1'b1; + end else begin + temp = round_frac(duty_cycle_fix*divide, 1); + + // comes from above round_frac + high_time = temp[`FRAC_PRECISION+7:`FRAC_PRECISION+1]; + // If the duty cycle * divide rounded is .5 or greater then this bit + // is set. + w_edge = temp[`FRAC_PRECISION]; // comes from round_frac + + // If the high time comes out to 0, it needs to be set to at least 1 + // and w_edge set to 0 + if(high_time == 7'h00) begin + high_time = 7'h01; + w_edge = 1'b0; + end + + if(high_time == divide) begin + high_time = divide - 1; + w_edge = 1'b1; + end + + // Calculate low_time based on the divide setting and set no_count to + // 0 as it is only used when divide is 1. + low_time = divide - high_time; + no_count = 1'b0; + end + + // Set the return value. + mmcm_pll_divider = {w_edge,no_count,high_time[5:0],low_time[5:0]}; + end +endfunction + +// This function calculates mx, delay_time, and phase_mux +// of a non-fractional counter based on the divide and phase +// +// NOTE: The only valid value for the MX bits is 2'b00 to ensure the coarse mux +// is used. +function [10:0] mmcm_pll_phase + ( + // divide must be an integer (use fractional if not) + // assumed that divide already checked to be valid + input [7:0] divide, // Max divide is 128 + + // Phase is given in degrees (-360,000 to 360,000) + input signed [31:0] phase + ); + + reg [`FIXED_WIDTH:1] phase_in_cycles; + reg [`FIXED_WIDTH:1] phase_fixed; + reg [1:0] mx; + reg [5:0] delay_time; + reg [2:0] phase_mux; + + reg [`FIXED_WIDTH:1] temp; + + begin +`ifdef DEBUG + $display("mmcm_pll_phase-divide:%d,phase:%d", + divide, phase); +`endif + + if ((phase < -360000) || (phase > 360000)) begin +`ifndef SYNTHESIS + $display("ERROR: phase of $phase is not between -360000 and 360000"); + `endif + $finish; + end + + // If phase is less than 0, convert it to a positive phase shift + // Convert to (FIXED_WIDTH-FRAC_PRECISION).FRAC_PRECISION fixed point + if(phase < 0) begin + phase_fixed = ( (phase + 360000) << `FRAC_PRECISION ) / 1000; + end else begin + phase_fixed = ( phase << `FRAC_PRECISION ) / 1000; + end + + // Put phase in terms of decimal number of vco clock cycles + phase_in_cycles = ( phase_fixed * divide ) / 360; + +`ifdef DEBUG + $display("phase_in_cycles: %h", phase_in_cycles); +`endif + + + temp = round_frac(phase_in_cycles, 3); + + // set mx to 2'b00 that the phase mux from the VCO is enabled + mx = 2'b00; + phase_mux = temp[`FRAC_PRECISION:`FRAC_PRECISION-2]; + delay_time = temp[`FRAC_PRECISION+6:`FRAC_PRECISION+1]; + +`ifdef DEBUG + $display("temp: %h", temp); +`endif + + // Setup the return value + mmcm_pll_phase={mx, phase_mux, delay_time}; + end +endfunction + +// This function takes the divide value and outputs the necessary lock values +function [39:0] mmcm_pll_lock_lookup + ( + input [6:0] divide // Max divide is 64 + ); + + reg [2559:0] lookup; + + begin + lookup = { + // This table is composed of: + // LockRefDly_LockFBDly_LockCnt_LockSatHigh_UnlockCnt + 40'b00110_00110_1111101000_1111101001_0000000001, + 40'b00110_00110_1111101000_1111101001_0000000001, + 40'b01000_01000_1111101000_1111101001_0000000001, + 40'b01011_01011_1111101000_1111101001_0000000001, + 40'b01110_01110_1111101000_1111101001_0000000001, + 40'b10001_10001_1111101000_1111101001_0000000001, + 40'b10011_10011_1111101000_1111101001_0000000001, + 40'b10110_10110_1111101000_1111101001_0000000001, + 40'b11001_11001_1111101000_1111101001_0000000001, + 40'b11100_11100_1111101000_1111101001_0000000001, + 40'b11111_11111_1110000100_1111101001_0000000001, + 40'b11111_11111_1100111001_1111101001_0000000001, + 40'b11111_11111_1011101110_1111101001_0000000001, + 40'b11111_11111_1010111100_1111101001_0000000001, + 40'b11111_11111_1010001010_1111101001_0000000001, + 40'b11111_11111_1001110001_1111101001_0000000001, + 40'b11111_11111_1000111111_1111101001_0000000001, + 40'b11111_11111_1000100110_1111101001_0000000001, + 40'b11111_11111_1000001101_1111101001_0000000001, + 40'b11111_11111_0111110100_1111101001_0000000001, + 40'b11111_11111_0111011011_1111101001_0000000001, + 40'b11111_11111_0111000010_1111101001_0000000001, + 40'b11111_11111_0110101001_1111101001_0000000001, + 40'b11111_11111_0110010000_1111101001_0000000001, + 40'b11111_11111_0110010000_1111101001_0000000001, + 40'b11111_11111_0101110111_1111101001_0000000001, + 40'b11111_11111_0101011110_1111101001_0000000001, + 40'b11111_11111_0101011110_1111101001_0000000001, + 40'b11111_11111_0101000101_1111101001_0000000001, + 40'b11111_11111_0101000101_1111101001_0000000001, + 40'b11111_11111_0100101100_1111101001_0000000001, + 40'b11111_11111_0100101100_1111101001_0000000001, + 40'b11111_11111_0100101100_1111101001_0000000001, + 40'b11111_11111_0100010011_1111101001_0000000001, + 40'b11111_11111_0100010011_1111101001_0000000001, + 40'b11111_11111_0100010011_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001 + }; + + // Set lookup_entry with the explicit bits from lookup with a part select + mmcm_pll_lock_lookup = lookup[ ((64-divide)*40) +: 40]; + `ifdef DEBUG + $display("lock_lookup: %b", mmcm_pll_lock_lookup); + `endif + end +endfunction + +// This function takes the divide value and the bandwidth setting of the PLL +// and outputs the digital filter settings necessary. +function [9:0] mmcm_pll_filter_lookup + ( + input [6:0] divide, // Max divide is 64 + input [8*9:0] BANDWIDTH + ); + + reg [639:0] lookup_low; + reg [639:0] lookup_high; + + reg [9:0] lookup_entry; + + begin + lookup_low = { + // CP_RES_LFHF + 10'b0010_1111_00, + 10'b0010_1111_00, + 10'b0010_0111_00, + 10'b0010_1101_00, + 10'b0010_0101_00, + 10'b0010_0101_00, + 10'b0010_1001_00, + 10'b0010_1110_00, + 10'b0010_1110_00, + 10'b0010_0001_00, + 10'b0010_0001_00, + 10'b0010_0110_00, + 10'b0010_0110_00, + 10'b0010_0110_00, + 10'b0010_0110_00, + 10'b0010_1010_00, + 10'b0010_1010_00, + 10'b0010_1010_00, + 10'b0010_1010_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_1100_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0010_0010_00, + 10'b0011_1100_00, + 10'b0011_1100_00, + 10'b0011_1100_00, + 10'b0011_1100_00, + 10'b0011_1100_00, + 10'b0011_1100_00, + 10'b0011_1100_00, + 10'b0010_0100_00, + 10'b0010_0100_00, + 10'b0010_0100_00, + 10'b0010_0100_00, + 10'b0010_0100_00, + 10'b0010_0100_00, + 10'b0010_0100_00, + 10'b0010_0100_00, + 10'b0010_0100_00, + 10'b0010_0100_00, + 10'b0010_0100_00, + 10'b0010_0100_00, + 10'b0010_0100_00, + 10'b0010_0100_00, + 10'b0010_0100_00, + 10'b0010_0100_00, + 10'b0010_0100_00 + }; + + lookup_high = { + // CP_RES_LFHF + 10'b0011_0111_00, + 10'b0011_0111_00, + 10'b0101_1111_00, + 10'b0111_1111_00, + 10'b0111_1011_00, + 10'b1101_0111_00, + 10'b1110_1011_00, + 10'b1110_1101_00, + 10'b1111_1101_00, + 10'b1111_0111_00, + 10'b1111_1011_00, + 10'b1111_1101_00, + 10'b1111_0011_00, + 10'b1110_0101_00, + 10'b1111_0101_00, + 10'b1111_0101_00, + 10'b1111_0101_00, + 10'b1111_0101_00, + 10'b0111_0110_00, + 10'b0111_0110_00, + 10'b0111_0110_00, + 10'b0111_0110_00, + 10'b0101_1100_00, + 10'b0101_1100_00, + 10'b0101_1100_00, + 10'b1100_0001_00, + 10'b1100_0001_00, + 10'b1100_0001_00, + 10'b1100_0001_00, + 10'b1100_0001_00, + 10'b1100_0001_00, + 10'b1100_0001_00, + 10'b1100_0001_00, + 10'b0100_0010_00, + 10'b0100_0010_00, + 10'b0100_0010_00, + 10'b0010_1000_00, + 10'b0010_1000_00, + 10'b0010_1000_00, + 10'b0011_0100_00, + 10'b0010_1000_00, + 10'b0010_1000_00, + 10'b0010_1000_00, + 10'b0010_1000_00, + 10'b0010_1000_00, + 10'b0010_1000_00, + 10'b0010_1000_00, + 10'b0010_1000_00, + 10'b0010_1000_00, + 10'b0010_1000_00, + 10'b0010_1000_00, + 10'b0010_1000_00, + 10'b0010_1000_00, + 10'b0100_1100_00, + 10'b0100_1100_00, + 10'b0100_1100_00, + 10'b0100_1100_00, + 10'b0100_1100_00, + 10'b0100_1100_00, + 10'b0100_1100_00, + 10'b0010_0100_00, + 10'b0010_0100_00, + 10'b0010_0100_00, + 10'b0010_0100_00 + }; + + // Set lookup_entry with the explicit bits from lookup with a part select + if(BANDWIDTH == "LOW") begin + // Low Bandwidth + mmcm_pll_filter_lookup = lookup_low[ ((64-divide)*10) +: 10]; + end else begin + // High or optimized bandwidth + mmcm_pll_filter_lookup = lookup_high[ ((64-divide)*10) +: 10]; + end + + `ifdef DEBUG + $display("filter_lookup: %b", mmcm_pll_filter_lookup); + `endif + end +endfunction + +// This function takes in the divide, phase, and duty cycle +// setting to calculate the upper and lower counter registers. +function [37:0] mmcm_pll_count_calc + ( + input [7:0] divide, // Max divide is 128 + input signed [31:0] phase, + input [31:0] duty_cycle // Multiplied by 100,000 + ); + + reg [13:0] div_calc; + reg [16:0] phase_calc; + + begin + `ifdef DEBUG + $display("mmcm_pll_count_calc- divide:%h, phase:%d, duty_cycle:%d", + divide, phase, duty_cycle); +`endif + + // w_edge[13], no_count[12], high_time[11:6], low_time[5:0] + div_calc = mmcm_pll_divider(divide, duty_cycle); + // mx[10:9], pm[8:6], dt[5:0] + phase_calc = mmcm_pll_phase(divide, phase); + + // Return value is the upper and lower address of counter + // Upper address is: + // RESERVED [31:26] + // MX [25:24] + // EDGE [23] + // NOCOUNT [22] + // DELAY_TIME [21:16] + // Lower Address is: + // PHASE_MUX [15:13] + // RESERVED [12] + // HIGH_TIME [11:6] + // LOW_TIME [5:0] + +`ifdef DEBUG + $display("div:%d dc:%d phase:%d ht:%d lt:%d ed:%d nc:%d mx:%d dt:%d pm:%d", + divide, duty_cycle, phase, div_calc[11:6], div_calc[5:0], + div_calc[13], div_calc[12], + phase_calc[16:15], phase_calc[5:0], phase_calc[14:12]); +`endif + + mmcm_pll_count_calc = + { + // Upper Address + 6'h00, phase_calc[10:9], div_calc[13:12], phase_calc[5:0], + // Lower Address + phase_calc[8:6], 1'b0, div_calc[11:0] + }; + end +endfunction diff --git a/src/ip/clk_wiz_0/mmcm_pll_drp_func_us_mmcm.vh b/src/ip/clk_wiz_0/mmcm_pll_drp_func_us_mmcm.vh new file mode 100755 index 0000000..154c81f --- /dev/null +++ b/src/ip/clk_wiz_0/mmcm_pll_drp_func_us_mmcm.vh @@ -0,0 +1,680 @@ +// (c) Copyright 2009-2010, 2023 Advanced Micro Devices, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of AMD and is protected under U.S. and international copyright +// and other intellectual property laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// AMD, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND AMD HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) AMD shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or AMD had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// AMD products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of AMD products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +//////////////////////////////////////////////////////////// +// +/////////////////////////////////////////////////////////////////////////////// + +// These are user functions that should not be modified. Changes to the defines +// or code within the functions may alter the accuracy of the calculations. + +// Define debug to provide extra messages durring elaboration +//`define DEBUG 1 + +// FRAC_PRECISION describes the width of the fractional portion of the fixed +// point numbers. These should not be modified, they are for development +// only +`define FRAC_PRECISION 10 +// FIXED_WIDTH describes the total size for fixed point calculations(int+frac). +// Warning: L.50 and below will not calculate properly with FIXED_WIDTHs +// greater than 32 +`define FIXED_WIDTH 32 + +// This function takes a fixed point number and rounds it to the nearest +// fractional precision bit. +function [`FIXED_WIDTH:1] round_frac + ( + // Input is (FIXED_WIDTH-FRAC_PRECISION).FRAC_PRECISION fixed point number + input [`FIXED_WIDTH:1] decimal, + + // This describes the precision of the fraction, for example a value + // of 1 would modify the fractional so that instead of being a .16 + // fractional, it would be a .1 (rounded to the nearest 0.5 in turn) + input [`FIXED_WIDTH:1] precision + ); + + begin + + `ifdef DEBUG + $display("round_frac - decimal: %h, precision: %h", decimal, precision); + `endif + // If the fractional precision bit is high then round up + if( decimal[(`FRAC_PRECISION-precision)] == 1'b1) begin + round_frac = decimal + (1'b1 << (`FRAC_PRECISION-precision)); + end else begin + round_frac = decimal; + end + `ifdef DEBUG + $display("round_frac: %h", round_frac); + `endif + end +endfunction + +// This function calculates high_time, low_time, w_edge, and no_count +// of a non-fractional counter based on the divide and duty cycle +// +// NOTE: high_time and low_time are returned as integers between 0 and 63 +// inclusive. 64 should equal 6'b000000 (in other words it is okay to +// ignore the overflow) +function [13:0] mmcm_pll_divider + ( + input [7:0] divide, // Max divide is 128 + input [31:0] duty_cycle // Duty cycle is multiplied by 100,000 + ); + + reg [`FIXED_WIDTH:1] duty_cycle_fix; + + // High/Low time is initially calculated with a wider integer to prevent a + // calculation error when it overflows to 64. + reg [6:0] high_time; + reg [6:0] low_time; + reg w_edge; + reg no_count; + + reg [`FIXED_WIDTH:1] temp; + + begin + // Duty Cycle must be between 0 and 1,000 + if(duty_cycle <=0 || duty_cycle >= 100000) begin +`ifndef SYNTHESIS + $display("ERROR: duty_cycle: %d is invalid", duty_cycle); + `endif + $finish; + end + + // Convert to FIXED_WIDTH-FRAC_PRECISION.FRAC_PRECISION fixed point + duty_cycle_fix = (duty_cycle << `FRAC_PRECISION) / 100_000; + + `ifdef DEBUG + $display("duty_cycle_fix: %h", duty_cycle_fix); + `endif + + // If the divide is 1 nothing needs to be set except the no_count bit. + // Other values are dummies + if(divide == 7'h01) begin + high_time = 7'h01; + w_edge = 1'b0; + low_time = 7'h01; + no_count = 1'b1; + end else begin + temp = round_frac(duty_cycle_fix*divide, 1); + + // comes from above round_frac + high_time = temp[`FRAC_PRECISION+7:`FRAC_PRECISION+1]; + // If the duty cycle * divide rounded is .5 or greater then this bit + // is set. + w_edge = temp[`FRAC_PRECISION]; // comes from round_frac + + // If the high time comes out to 0, it needs to be set to at least 1 + // and w_edge set to 0 + if(high_time == 7'h00) begin + high_time = 7'h01; + w_edge = 1'b0; + end + + if(high_time == divide) begin + high_time = divide - 1; + w_edge = 1'b1; + end + + // Calculate low_time based on the divide setting and set no_count to + // 0 as it is only used when divide is 1. + low_time = divide - high_time; + no_count = 1'b0; + end + + // Set the return value. + mmcm_pll_divider = {w_edge,no_count,high_time[5:0],low_time[5:0]}; + end +endfunction + +// This function calculates mx, delay_time, and phase_mux +// of a non-fractional counter based on the divide and phase +// +// NOTE: The only valid value for the MX bits is 2'b00 to ensure the coarse mux +// is used. +function [10:0] mmcm_pll_phase + ( + // divide must be an integer (use fractional if not) + // assumed that divide already checked to be valid + input [7:0] divide, // Max divide is 128 + + // Phase is given in degrees (-360,000 to 360,000) + input signed [31:0] phase + ); + + reg [`FIXED_WIDTH:1] phase_in_cycles; + reg [`FIXED_WIDTH:1] phase_fixed; + reg [1:0] mx; + reg [5:0] delay_time; + reg [2:0] phase_mux; + + reg [`FIXED_WIDTH:1] temp; + + begin +`ifdef DEBUG + $display("mmcm_pll_phase-divide:%d,phase:%d", + divide, phase); +`endif + + if ((phase < -360000) || (phase > 360000)) begin +`ifndef SYNTHESIS + $display("ERROR: phase of $phase is not between -360000 and 360000"); + `endif + $finish; + end + + // If phase is less than 0, convert it to a positive phase shift + // Convert to (FIXED_WIDTH-FRAC_PRECISION).FRAC_PRECISION fixed point + if(phase < 0) begin + phase_fixed = ( (phase + 360000) << `FRAC_PRECISION ) / 1000; + end else begin + phase_fixed = ( phase << `FRAC_PRECISION ) / 1000; + end + + // Put phase in terms of decimal number of vco clock cycles + phase_in_cycles = ( phase_fixed * divide ) / 360; + +`ifdef DEBUG + $display("phase_in_cycles: %h", phase_in_cycles); +`endif + + + temp = round_frac(phase_in_cycles, 3); + + // set mx to 2'b00 that the phase mux from the VCO is enabled + mx = 2'b00; + phase_mux = temp[`FRAC_PRECISION:`FRAC_PRECISION-2]; + delay_time = temp[`FRAC_PRECISION+6:`FRAC_PRECISION+1]; + + `ifdef DEBUG + $display("temp: %h", temp); + `endif + + // Setup the return value + mmcm_pll_phase={mx, phase_mux, delay_time}; + end +endfunction + +// This function takes the divide value and outputs the necessary lock values +function [39:0] mmcm_pll_lock_lookup + ( + input [6:0] divide // Max divide is 64 + ); + + reg [2559:0] lookup; + + begin + lookup = { + // This table is composed of: + // LockRefDly_LockFBDly_LockCnt_LockSatHigh_UnlockCnt + 40'b00110_00110_1111101000_1111101001_0000000001, + 40'b00110_00110_1111101000_1111101001_0000000001, + 40'b01000_01000_1111101000_1111101001_0000000001, + 40'b01011_01011_1111101000_1111101001_0000000001, + 40'b01110_01110_1111101000_1111101001_0000000001, + 40'b10001_10001_1111101000_1111101001_0000000001, + 40'b10011_10011_1111101000_1111101001_0000000001, + 40'b10110_10110_1111101000_1111101001_0000000001, + 40'b11001_11001_1111101000_1111101001_0000000001, + 40'b11100_11100_1111101000_1111101001_0000000001, + 40'b11111_11111_1110000100_1111101001_0000000001, + 40'b11111_11111_1100111001_1111101001_0000000001, + 40'b11111_11111_1011101110_1111101001_0000000001, + 40'b11111_11111_1010111100_1111101001_0000000001, + 40'b11111_11111_1010001010_1111101001_0000000001, + 40'b11111_11111_1001110001_1111101001_0000000001, + 40'b11111_11111_1000111111_1111101001_0000000001, + 40'b11111_11111_1000100110_1111101001_0000000001, + 40'b11111_11111_1000001101_1111101001_0000000001, + 40'b11111_11111_0111110100_1111101001_0000000001, + 40'b11111_11111_0111011011_1111101001_0000000001, + 40'b11111_11111_0111000010_1111101001_0000000001, + 40'b11111_11111_0110101001_1111101001_0000000001, + 40'b11111_11111_0110010000_1111101001_0000000001, + 40'b11111_11111_0110010000_1111101001_0000000001, + 40'b11111_11111_0101110111_1111101001_0000000001, + 40'b11111_11111_0101011110_1111101001_0000000001, + 40'b11111_11111_0101011110_1111101001_0000000001, + 40'b11111_11111_0101000101_1111101001_0000000001, + 40'b11111_11111_0101000101_1111101001_0000000001, + 40'b11111_11111_0100101100_1111101001_0000000001, + 40'b11111_11111_0100101100_1111101001_0000000001, + 40'b11111_11111_0100101100_1111101001_0000000001, + 40'b11111_11111_0100010011_1111101001_0000000001, + 40'b11111_11111_0100010011_1111101001_0000000001, + 40'b11111_11111_0100010011_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001 + }; + + // Set lookup_entry with the explicit bits from lookup with a part select + mmcm_pll_lock_lookup = lookup[ ((64-divide)*40) +: 40]; + `ifdef DEBUG + $display("lock_lookup: %b", mmcm_pll_lock_lookup); + `endif + end +endfunction + +// This function takes the divide value and the bandwidth setting of the MMCM +// and outputs the digital filter settings necessary. +function [9:0] mmcm_pll_filter_lookup + ( + input [6:0] divide, // Max divide is 64 + input [8*9:0] BANDWIDTH + ); + + reg [639:0] lookup_low; + reg [639:0] lookup_high; + + reg [9:0] lookup_entry; + + begin + lookup_low = { + // CP_RES_LFHF + 10'b0010_1111_11, + 10'b0010_1111_11, + 10'b0010_1111_11, + 10'b0010_1111_11, + 10'b0010_1111_11, + 10'b0010_1111_11, + 10'b0010_0111_11, + 10'b0010_0111_11, + 10'b0010_0111_11, + 10'b0010_1101_11, + 10'b0010_1101_11, + 10'b0010_1101_11, + 10'b0010_0011_11, + 10'b0010_0101_11, + 10'b0010_0101_11, + 10'b0010_0101_11, + 10'b0010_1001_11, + 10'b0010_1001_11, + 10'b0010_1110_11, + 10'b0010_1110_11, + 10'b0010_1110_11, + 10'b0010_1110_11, + 10'b0010_1110_11, + 10'b0010_1110_11, + 10'b0010_0001_11, + 10'b0010_0001_11, + 10'b0010_0001_11, + 10'b0010_0001_11, + 10'b0010_0001_11, + 10'b0010_0110_11, + 10'b0010_0110_11, + 10'b0010_0110_11, + 10'b0010_0110_11, + 10'b0010_0110_11, + 10'b0010_0110_11, + 10'b0010_0110_11, + 10'b0010_0110_11, + 10'b0010_0110_11, + 10'b0010_0110_11, + 10'b0010_1010_11, + 10'b0010_1010_11, + 10'b0010_1010_11, + 10'b0010_1010_11, + 10'b0010_1010_11, + 10'b0010_1010_11, + 10'b0010_1010_11, + 10'b0010_1010_11, + 10'b0010_1100_11, + 10'b0010_1100_11, + 10'b0010_1100_11, + 10'b0010_1100_11, + 10'b0010_1100_11, + 10'b0010_1100_11, + 10'b0010_1100_11, + 10'b0010_1100_11, + 10'b0010_1100_11, + 10'b0010_1100_11, + 10'b0010_1100_11, + 10'b0010_1100_11, + 10'b0010_1100_11, + 10'b0010_1100_11, + 10'b0010_1100_11, + 10'b0010_1100_11, + 10'b0010_1100_11 + }; + + lookup_high = { + // CP_RES_LFHF + 10'b0010_1111_11, + 10'b0010_1111_11, + 10'b0010_1011_11, + 10'b0011_1111_11, + 10'b0100_1111_11, + 10'b0100_1111_11, + 10'b0101_1111_11, + 10'b0110_1111_11, + 10'b0111_1111_11, + 10'b0111_1111_11, + 10'b1100_1111_11, + 10'b1101_1111_11, + 10'b1110_1111_11, + 10'b1111_1111_11, + 10'b1111_1111_11, + 10'b1110_0111_11, + 10'b1110_1011_11, + 10'b1111_0111_11, + 10'b1111_1011_11, + 10'b1111_1011_11, + 10'b1110_1101_11, + 10'b1111_1101_11, + 10'b1111_1101_11, + 10'b1111_0011_11, + 10'b1111_0011_11, + 10'b1111_0011_11, + 10'b1110_0101_11, + 10'b1110_0101_11, + 10'b1110_0101_11, + 10'b1111_0101_11, + 10'b1111_0101_11, + 10'b1111_0101_11, + 10'b1111_1001_11, + 10'b1111_1001_11, + 10'b1111_1001_11, + 10'b1111_1001_11, + 10'b1111_1001_11, + 10'b1110_1110_11, + 10'b1110_1110_11, + 10'b1110_1110_11, + 10'b1110_1110_11, + 10'b1111_1110_11, + 10'b1111_1110_11, + 10'b1111_1110_11, + 10'b1111_1110_11, + 10'b1111_1110_11, + 10'b1111_1110_11, + 10'b1111_1110_11, + 10'b1110_0001_11, + 10'b1110_0001_11, + 10'b1110_0001_11, + 10'b1110_0001_11, + 10'b1110_0001_11, + 10'b1100_0110_11, + 10'b1100_0110_11, + 10'b1100_0110_11, + 10'b1100_0110_11, + 10'b1100_0110_11, + 10'b1100_0110_11, + 10'b1100_0110_11, + 10'b1100_1010_11, + 10'b1100_1010_11, + 10'b1100_1010_11, + 10'b1100_1010_11 + }; + + // Set lookup_entry with the explicit bits from lookup with a part select + if(BANDWIDTH == "LOW") begin + // Low Bandwidth + mmcm_pll_filter_lookup = lookup_low[ ((64-divide)*10) +: 10]; + end else begin + // High or optimized bandwidth + mmcm_pll_filter_lookup = lookup_high[ ((64-divide)*10) +: 10]; + end + + `ifdef DEBUG + $display("filter_lookup: %b", mmcm_pll_filter_lookup); + `endif + end +endfunction + +// This function takes in the divide, phase, and duty cycle +// setting to calculate the upper and lower counter registers. +function [37:0] mmcm_pll_count_calc + ( + input [7:0] divide, // Max divide is 128 + input signed [31:0] phase, + input [31:0] duty_cycle // Multiplied by 100,000 + ); + + reg [13:0] div_calc; + reg [16:0] phase_calc; + + begin + `ifdef DEBUG + $display("mmcm_pll_count_calc- divide:%h, phase:%d, duty_cycle:%d", + divide, phase, duty_cycle); + `endif + + // w_edge[13], no_count[12], high_time[11:6], low_time[5:0] + div_calc = mmcm_pll_divider(divide, duty_cycle); + // mx[10:9], pm[8:6], dt[5:0] + phase_calc = mmcm_pll_phase(divide, phase); + + // Return value is the upper and lower address of counter + // Upper address is: + // RESERVED [31:26] + // MX [25:24] + // EDGE [23] + // NOCOUNT [22] + // DELAY_TIME [21:16] + // Lower Address is: + // PHASE_MUX [15:13] + // RESERVED [12] + // HIGH_TIME [11:6] + // LOW_TIME [5:0] + + `ifdef DEBUG + $display("div:%d dc:%d phase:%d ht:%d lt:%d ed:%d nc:%d mx:%d dt:%d pm:%d", + divide, duty_cycle, phase, div_calc[11:6], div_calc[5:0], + div_calc[13], div_calc[12], + phase_calc[16:15], phase_calc[5:0], phase_calc[14:12]); + `endif + + mmcm_pll_count_calc = + { + // Upper Address + 6'h00, phase_calc[10:9], div_calc[13:12], phase_calc[5:0], + // Lower Address + phase_calc[8:6], 1'b0, div_calc[11:0] + }; + end +endfunction + + +// This function takes in the divide, phase, and duty cycle +// setting to calculate the upper and lower counter registers. +// for fractional multiply/divide functions. +// +// +function [37:0] mmcm_frac_count_calc + ( + input [7:0] divide, // Max divide is 128 + input signed [31:0] phase, + input [31:0] duty_cycle, // Multiplied by 1,000 + input [9:0] frac // Multiplied by 1000 + ); + + //Required for fractional divide calculations + reg [7:0] lt_frac; + reg [7:0] ht_frac; + + reg /*[7:0]*/ wf_fall_frac; + reg /*[7:0]*/ wf_rise_frac; + + reg [31:0] a; + reg [7:0] pm_rise_frac_filtered ; + reg [7:0] pm_fall_frac_filtered ; + reg [7:0] clkout0_divide_int; + reg [2:0] clkout0_divide_frac; + reg [7:0] even_part_high; + reg [7:0] even_part_low; + + reg [7:0] odd; + reg [7:0] odd_and_frac; + + reg [7:0] pm_fall; + reg [7:0] pm_rise; + reg [7:0] dt; + reg [7:0] dt_int; + reg [63:0] dt_calc; + + reg [7:0] pm_rise_frac; + reg [7:0] pm_fall_frac; + + reg [31:0] a_per_in_octets; + reg [31:0] a_phase_in_cycles; + + parameter precision = 0.125; + + reg [31:0] phase_fixed; // changed to 31:0 from 32:1 jt 5/2/11 + reg [31: 0] phase_pos; + reg [31: 0] phase_vco; + reg [31:0] temp;// changed to 31:0 from 32:1 jt 5/2/11 + reg [13:0] div_calc; + reg [16:0] phase_calc; + + begin + `ifdef DEBUG + $display("mmcm_frac_count_calc- divide:%h, phase:%d, duty_cycle:%d", + divide, phase, duty_cycle); + `endif + + //convert phase to fixed + if ((phase < -360000) || (phase > 360000)) begin +`ifndef SYNTHESIS + $display("ERROR: phase of $phase is not between -360000 and 360000"); + `endif + $finish; + end + + + // Return value is + // Transfer data + // RESERVED [37:36] + // FRAC_TIME [35:33] + // FRAC_WF_FALL [32] + // Upper address is: + // RESERVED [31:26] + // MX [25:24] + // EDGE [23] + // NOCOUNT [22] + // DELAY_TIME [21:16] + // Lower Address is: + // PHASE_MUX [15:13] + // RESERVED [12] + // HIGH_TIME [11:6] + // LOW_TIME [5:0] + + + + clkout0_divide_frac = frac / 125; + clkout0_divide_int = divide; + + even_part_high = clkout0_divide_int >> 1;//$rtoi(clkout0_divide_int / 2); + even_part_low = even_part_high; + + odd = clkout0_divide_int - even_part_high - even_part_low; + odd_and_frac = (8*odd) + clkout0_divide_frac; + + lt_frac = even_part_high - (odd_and_frac <= 9);//IF(odd_and_frac>9,even_part_high, even_part_high - 1) + ht_frac = even_part_low - (odd_and_frac <= 8);//IF(odd_and_frac>8,even_part_low, even_part_low- 1) + + pm_fall = {odd[6:0],2'b00} + {6'h00, clkout0_divide_frac[2:1]}; // using >> instead of clkout0_divide_frac / 2 + pm_rise = 0; //0 + + wf_fall_frac = ((odd_and_frac >=2) && (odd_and_frac <=9)) || ((clkout0_divide_frac == 1) && (clkout0_divide_int == 2));//CRS610807 + wf_rise_frac = (odd_and_frac >=1) && (odd_and_frac <=8);//IF(odd_and_frac>=1,IF(odd_and_frac <= 8,1,0),0) + + + + //Calculate phase in fractional cycles + a_per_in_octets = (8 * divide) + (frac / 125) ; + a_phase_in_cycles = (phase+10) * a_per_in_octets / 360000 ;//Adding 1 due to rounding errors + pm_rise_frac = (a_phase_in_cycles[7:0] ==8'h00)?8'h00:a_phase_in_cycles[7:0] - {a_phase_in_cycles[7:3],3'b000}; + + dt_calc = ((phase+10) * a_per_in_octets / 8 )/360000 ;//TRUNC(phase* divide / 360); //or_simply (a_per_in_octets / 8) + dt = dt_calc[7:0]; + + pm_rise_frac_filtered = (pm_rise_frac >=8) ? (pm_rise_frac ) - 8: pm_rise_frac ; //((phase_fixed * (divide + frac / 1000)) / 360) - {pm_rise_frac[7:3],3'b000};//$rtoi(clkout0_phase * clkout0_divide / 45);//a; + + dt_int = dt + (& pm_rise_frac[7:4]); //IF(pm_rise_overwriting>7,dt+1,dt) + pm_fall_frac = pm_fall + pm_rise_frac; + pm_fall_frac_filtered = pm_fall + pm_rise_frac - {pm_fall_frac[7:3], 3'b000}; + + div_calc = mmcm_pll_divider(divide, duty_cycle); //Use to determine edge[7], no count[6] + phase_calc = mmcm_pll_phase(divide, phase);// returns{mx[1:0], phase_mux[2:0], delay_time[5:0]} + + mmcm_frac_count_calc[37:0] = + { 2'b00, pm_fall_frac_filtered[2:0], wf_fall_frac, + 1'b0, clkout0_divide_frac[2:0], 1'b1, wf_rise_frac, phase_calc[10:9], div_calc[13:12], dt[5:0], + pm_rise_frac_filtered[2], pm_rise_frac_filtered[1], pm_rise_frac_filtered[0], 1'b0, ht_frac[5:0], lt_frac[5:0] + } ; + + `ifdef DEBUG + $display("-%d.%d p%d>> :DADDR_9_15 frac30to28.frac_en.wf_r_frac.dt:%b%d%d_%b:DADDR_7_13 pm_f_frac_filtered_29to27.wf_f_frac_26:%b%d:DADDR_8_14.pm_r_frac_filt_15to13.ht_frac.lt_frac:%b%b%b:", divide, frac, phase, clkout0_divide_frac, 1, wf_rise_frac, dt, pm_fall_frac_filtered, wf_fall_frac, pm_rise_frac_filtered, ht_frac, lt_frac); + `endif + + end +endfunction + diff --git a/src/ip/clk_wiz_0/mmcm_pll_drp_func_us_pll.vh b/src/ip/clk_wiz_0/mmcm_pll_drp_func_us_pll.vh new file mode 100755 index 0000000..ff369d1 --- /dev/null +++ b/src/ip/clk_wiz_0/mmcm_pll_drp_func_us_pll.vh @@ -0,0 +1,555 @@ +/////////////////////////////////////////////////////////////////////////////// +// +// Company: AMD +// Engineer: Jim Tatsukawa +// Date: 6/15/2015 +// Design Name: PLLE3 DRP +// Module Name: plle3_drp_func.h +// Version: 1.10 +// Target Devices: UltraScale Architecture +// Tool versions: 2015.1 +// Description: This header provides the functions necessary to +// calculate the DRP register values for the V6 PLL. +// +// Revision Notes: 8/11 - PLLE3 updated for PLLE3 file 4564419 +// Revision Notes: 6/15 - pll_filter_lookup fixed for max M of 19 +// PM_Rise bits have been removed for PLLE3 +// +// (c) Copyright 2009-2010, 2023 Advanced Micro Devices, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of AMD and is protected under U.S. and international copyright +// and other intellectual property laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// AMD, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND AMD HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) AMD shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or AMD had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// AMD products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of AMD products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +//////////////////////////////////////////////////////////// +// +/////////////////////////////////////////////////////////////////////////////// + +// These are user functions that should not be modified. Changes to the defines +// or code within the functions may alter the accuracy of the calculations. + +// Define debug to provide extra messages durring elaboration +//`define DEBUG 1 + +// FRAC_PRECISION describes the width of the fractional portion of the fixed +// point numbers. These should not be modified, they are for development +// only +`define FRAC_PRECISION 10 +// FIXED_WIDTH describes the total size for fixed point calculations(int+frac). +// Warning: L.50 and below will not calculate properly with FIXED_WIDTHs +// greater than 32 +`define FIXED_WIDTH 32 + +// This function takes a fixed point number and rounds it to the nearest +// fractional precision bit. +function [`FIXED_WIDTH:1] round_frac + ( + // Input is (FIXED_WIDTH-FRAC_PRECISION).FRAC_PRECISION fixed point number + input [`FIXED_WIDTH:1] decimal, + + // This describes the precision of the fraction, for example a value + // of 1 would modify the fractional so that instead of being a .16 + // fractional, it would be a .1 (rounded to the nearest 0.5 in turn) + input [`FIXED_WIDTH:1] precision + ); + + begin + + `ifdef DEBUG + $display("round_frac - decimal: %h, precision: %h", decimal, precision); + `endif + // If the fractional precision bit is high then round up + if( decimal[(`FRAC_PRECISION-precision)] == 1'b1) begin + round_frac = decimal + (1'b1 << (`FRAC_PRECISION-precision)); + end else begin + round_frac = decimal; + end + `ifdef DEBUG + $display("round_frac: %h", round_frac); + `endif + end +endfunction + +// This function calculates high_time, low_time, w_edge, and no_count +// of a non-fractional counter based on the divide and duty cycle +// +// NOTE: high_time and low_time are returned as integers between 0 and 63 +// inclusive. 64 should equal 6'b000000 (in other words it is okay to +// ignore the overflow) +function [13:0] mmcm_pll_divider + ( + input [7:0] divide, // Max divide is 128 + input [31:0] duty_cycle // Duty cycle is multiplied by 100,000 + ); + + reg [`FIXED_WIDTH:1] duty_cycle_fix; + + // High/Low time is initially calculated with a wider integer to prevent a + // calculation error when it overflows to 64. + reg [6:0] high_time; + reg [6:0] low_time; + reg w_edge; + reg no_count; + + reg [`FIXED_WIDTH:1] temp; + + begin + // Duty Cycle must be between 0 and 1,000 + if(duty_cycle <=0 || duty_cycle >= 100000) begin +`ifndef SYNTHESIS + $display("ERROR: duty_cycle: %d is invalid", duty_cycle); + `endif + $finish; + end + + // Convert to FIXED_WIDTH-FRAC_PRECISION.FRAC_PRECISION fixed point + duty_cycle_fix = (duty_cycle << `FRAC_PRECISION) / 100_000; + + `ifdef DEBUG + $display("duty_cycle_fix: %h", duty_cycle_fix); + `endif + + // If the divide is 1 nothing needs to be set except the no_count bit. + // Other values are dummies + if(divide == 7'h01) begin + high_time = 7'h01; + w_edge = 1'b0; + low_time = 7'h01; + no_count = 1'b1; + end else begin + temp = round_frac(duty_cycle_fix*divide, 1); + + // comes from above round_frac + high_time = temp[`FRAC_PRECISION+7:`FRAC_PRECISION+1]; + // If the duty cycle * divide rounded is .5 or greater then this bit + // is set. + w_edge = temp[`FRAC_PRECISION]; // comes from round_frac + + // If the high time comes out to 0, it needs to be set to at least 1 + // and w_edge set to 0 + if(high_time == 7'h00) begin + high_time = 7'h01; + w_edge = 1'b0; + end + + if(high_time == divide) begin + high_time = divide - 1; + w_edge = 1'b1; + end + + // Calculate low_time based on the divide setting and set no_count to + // 0 as it is only used when divide is 1. + low_time = divide - high_time; + no_count = 1'b0; + end + + // Set the return value. + mmcm_pll_divider = {w_edge,no_count,high_time[5:0],low_time[5:0]}; + end +endfunction + +// This function calculates mx, delay_time, and phase_mux +// of a non-fractional counter based on the divide and phase +// +// NOTE: The only valid value for the MX bits is 2'b00 to ensure the coarse mux +// is used. +function [10:0] mmcm_pll_phase + ( + // divide must be an integer (use fractional if not) + // assumed that divide already checked to be valid + input [7:0] divide, // Max divide is 128 + + // Phase is given in degrees (-360,000 to 360,000) + input signed [31:0] phase + ); + + reg [`FIXED_WIDTH:1] phase_in_cycles; + reg [`FIXED_WIDTH:1] phase_fixed; + reg [1:0] mx; + reg [5:0] delay_time; + reg [2:0] phase_mux; + + reg [`FIXED_WIDTH:1] temp; + + begin +`ifdef DEBUG + $display("mmcm_pll_phase-divide:%d,phase:%d", + divide, phase); +`endif + + if ((phase < -360000) || (phase > 360000)) begin +`ifndef SYNTHESIS + $display("ERROR: phase of $phase is not between -360000 and 360000"); + `endif + $finish; + end + + // If phase is less than 0, convert it to a positive phase shift + // Convert to (FIXED_WIDTH-FRAC_PRECISION).FRAC_PRECISION fixed point + if(phase < 0) begin + phase_fixed = ( (phase + 360000) << `FRAC_PRECISION ) / 1000; + end else begin + phase_fixed = ( phase << `FRAC_PRECISION ) / 1000; + end + + // Put phase in terms of decimal number of vco clock cycles + phase_in_cycles = ( phase_fixed * divide ) / 360; + +`ifdef DEBUG + $display("phase_in_cycles: %h", phase_in_cycles); +`endif + + + temp = round_frac(phase_in_cycles, 3); + + // set mx to 2'b00 that the phase mux from the VCO is enabled + mx = 2'b00; + phase_mux = temp[`FRAC_PRECISION:`FRAC_PRECISION-2]; + delay_time = temp[`FRAC_PRECISION+6:`FRAC_PRECISION+1]; + + `ifdef DEBUG + $display("temp: %h", temp); + `endif + + // Setup the return value + mmcm_pll_phase={mx, phase_mux, delay_time}; + end +endfunction + +// This function takes the divide value and outputs the necessary lock values +function [39:0] mmcm_pll_lock_lookup + ( + input [6:0] divide // Max divide is 64 + ); + + reg [759:0] lookup; + + begin + lookup = { + // This table is composed of: + // LockRefDly_LockFBDly_LockCnt_LockSatHigh_UnlockCnt + 40'b00110_00110_1111101000_1111101001_0000000001, //1 + 40'b00110_00110_1111101000_1111101001_0000000001, //2 + 40'b01000_01000_1111101000_1111101001_0000000001, //3 + 40'b01011_01011_1111101000_1111101001_0000000001, //4 + 40'b01110_01110_1111101000_1111101001_0000000001, //5 + 40'b10001_10001_1111101000_1111101001_0000000001, //6 + 40'b10011_10011_1111101000_1111101001_0000000001, //7 + 40'b10110_10110_1111101000_1111101001_0000000001, //8 + 40'b11001_11001_1111101000_1111101001_0000000001, //9 + 40'b11100_11100_1111101000_1111101001_0000000001, //10 + 40'b11111_11111_1110000100_1111101001_0000000001, //11 + 40'b11111_11111_1100111001_1111101001_0000000001, //12 + 40'b11111_11111_1011101110_1111101001_0000000001, //13 + 40'b11111_11111_1010111100_1111101001_0000000001, //14 + 40'b11111_11111_1010001010_1111101001_0000000001, //15 + 40'b11111_11111_1001110001_1111101001_0000000001, //16 + 40'b11111_11111_1000111111_1111101001_0000000001, //17 + 40'b11111_11111_1000100110_1111101001_0000000001, //18 + 40'b11111_11111_1000001101_1111101001_0000000001 //19 + + }; + + // Set lookup_entry with the explicit bits from lookup with a part select + mmcm_pll_lock_lookup = lookup[ ((19-divide)*40) +: 40]; + `ifdef DEBUG + $display("lock_lookup: %b", mmcm_pll_lock_lookup); + `endif + end +endfunction + +// This function takes the divide value and the bandwidth setting of the PLL +// and outputs the digital filter settings necessary. Removing bandwidth setting for PLLE3. +function [9:0] mmcm_pll_filter_lookup + ( + input [6:0] divide // Max divide is 19 + ); + + reg [639:0] lookup; + reg [9:0] lookup_entry; + + begin + + lookup = { + // CP_RES_LFHF + 10'b0010_1111_01, //1 + 10'b0010_0011_11, //2 + 10'b0011_0011_11, //3 + 10'b0010_0001_11, //4 + 10'b0010_0110_11, //5 + 10'b0010_1010_11, //6 + 10'b0010_1010_11, //7 + 10'b0011_0110_11, //8 + 10'b0010_1100_11, //9 + 10'b0010_1100_11, //10 + 10'b0010_1100_11, //11 + 10'b0010_0010_11, //12 + 10'b0011_1100_11, //13 + 10'b0011_1100_11, //14 + 10'b0011_1100_11, //15 + 10'b0011_1100_11, //16 + 10'b0011_0010_11, //17 + 10'b0011_0010_11, //18 + 10'b0011_0010_11 //19 + }; + + mmcm_pll_filter_lookup = lookup [ ((19-divide)*10) +: 10]; + + `ifdef DEBUG + $display("filter_lookup: %b", mmcm_pll_filter_lookup); + `endif + end +endfunction + +// This function set the CLKOUTPHY divide settings to match +// the desired CLKOUTPHY_MODE setting. To create VCO_X2, then +// the CLKOUTPHY will be set to 2'b00 since the VCO is internally +// doubled and 2'b00 will represent divide by 1. Similarly "VCO" // will need to divide the doubled clock VCO clock frequency by // 2 therefore 2'b01 will match a divide by 2.And VCO_HALF will // need to divide the doubled VCO by 4, therefore 2'b10 +function [9:0] mmcm_pll_clkoutphy_calc + ( + input [8*9:0] CLKOUTPHY_MODE + ); + + if(CLKOUTPHY_MODE == "VCO_X2") begin + mmcm_pll_clkoutphy_calc= 2'b00; + end else if(CLKOUTPHY_MODE == "VCO") begin + mmcm_pll_clkoutphy_calc= 2'b01; + end else if(CLKOUTPHY_MODE == "CLKIN") begin + mmcm_pll_clkoutphy_calc= 2'b11; + end else begin // Assume "VCO_HALF" + mmcm_pll_clkoutphy_calc= 2'b10; + end + +endfunction + + +// This function takes in the divide, phase, and duty cycle +// setting to calculate the upper and lower counter registers. +function [37:0] mmcm_pll_count_calc + ( + input [7:0] divide, // Max divide is 128 + input signed [31:0] phase, + input [31:0] duty_cycle // Multiplied by 100,000 + ); + + reg [13:0] div_calc; + reg [16:0] phase_calc; + + begin + `ifdef DEBUG + $display("mmcm_pll_count_calc- divide:%h, phase:%d, duty_cycle:%d", + divide, phase, duty_cycle); + `endif + + // w_edge[13], no_count[12], high_time[11:6], low_time[5:0] + div_calc = mmcm_pll_divider(divide, duty_cycle); + // mx[10:9], pm[8:6], dt[5:0] + phase_calc = mmcm_pll_phase(divide, phase); + + // Return value is the upper and lower address of counter + // Upper address is: + // RESERVED [31:26] + // MX [25:24] + // EDGE [23] + // NOCOUNT [22] + // DELAY_TIME [21:16] + // Lower Address is: + // PHASE_MUX [15:13] + // RESERVED [12] + // HIGH_TIME [11:6] + // LOW_TIME [5:0] + + `ifdef DEBUG + $display("div:%d dc:%d phase:%d ht:%d lt:%d ed:%d nc:%d mx:%d dt:%d pm:%d", + divide, duty_cycle, phase, div_calc[11:6], div_calc[5:0], + div_calc[13], div_calc[12], + phase_calc[16:15], phase_calc[5:0], 3'b000);//Removed PM_Rise bits + `endif + + mmcm_pll_count_calc = + { + // Upper Address + 6'h00, phase_calc[10:9], div_calc[13:12], phase_calc[5:0], + // Lower Address + phase_calc[8:6], 1'b0, div_calc[11:0] + }; + end +endfunction + + +// This function takes in the divide, phase, and duty cycle +// setting to calculate the upper and lower counter registers. +// for fractional multiply/divide functions. +// +// +function [37:0] mmcm_pll_frac_count_calc + ( + input [7:0] divide, // Max divide is 128 + input signed [31:0] phase, + input [31:0] duty_cycle, // Multiplied by 1,000 + input [9:0] frac // Multiplied by 1000 + ); + + //Required for fractional divide calculations + reg [7:0] lt_frac; + reg [7:0] ht_frac; + + reg /*[7:0]*/ wf_fall_frac; + reg /*[7:0]*/ wf_rise_frac; + + reg [31:0] a; + reg [7:0] pm_rise_frac_filtered ; + reg [7:0] pm_fall_frac_filtered ; + reg [7:0] clkout0_divide_int; + reg [2:0] clkout0_divide_frac; + reg [7:0] even_part_high; + reg [7:0] even_part_low; + + reg [7:0] odd; + reg [7:0] odd_and_frac; + + reg [7:0] pm_fall; + reg [7:0] pm_rise; + reg [7:0] dt; + reg [7:0] dt_int; + reg [63:0] dt_calc; + + reg [7:0] pm_rise_frac; + reg [7:0] pm_fall_frac; + + reg [31:0] a_per_in_octets; + reg [31:0] a_phase_in_cycles; + + parameter precision = 0.125; + + reg [31:0] phase_fixed; // changed to 31:0 from 32:1 jt 5/2/11 + reg [31: 0] phase_pos; + reg [31: 0] phase_vco; + reg [31:0] temp;// changed to 31:0 from 32:1 jt 5/2/11 + reg [13:0] div_calc; + reg [16:0] phase_calc; + + begin + `ifdef DEBUG + $display("mmcm_pll_frac_count_calc- divide:%h, phase:%d, duty_cycle:%d", + divide, phase, duty_cycle); + `endif + + //convert phase to fixed + if ((phase < -360000) || (phase > 360000)) begin +`ifndef SYNTHESIS + $display("ERROR: phase of $phase is not between -360000 and 360000"); + `endif + $finish; + end + + + // Return value is + // Transfer data + // RESERVED [37:36] + // FRAC_TIME [35:33] + // FRAC_WF_FALL [32] + // Upper address is: + // RESERVED [31:26] + // MX [25:24] + // EDGE [23] + // NOCOUNT [22] + // DELAY_TIME [21:16] + // Lower Address is: + // PHASE_MUX [15:13] + // RESERVED [12] + // HIGH_TIME [11:6] + // LOW_TIME [5:0] + + + + clkout0_divide_frac = frac / 125; + clkout0_divide_int = divide; + + even_part_high = clkout0_divide_int >> 1;//$rtoi(clkout0_divide_int / 2); + even_part_low = even_part_high; + + odd = clkout0_divide_int - even_part_high - even_part_low; + odd_and_frac = (8*odd) + clkout0_divide_frac; + + lt_frac = even_part_high - (odd_and_frac <= 9);//IF(odd_and_frac>9,even_part_high, even_part_high - 1) + ht_frac = even_part_low - (odd_and_frac <= 8);//IF(odd_and_frac>8,even_part_low, even_part_low- 1) + + pm_fall = {odd[6:0],2'b00} + {6'h00, clkout0_divide_frac[2:1]}; // using >> instead of clkout0_divide_frac / 2 + pm_rise = 0; //0 + + wf_fall_frac = (odd_and_frac >=2) && (odd_and_frac <=9);//IF(odd_and_frac>=2,IF(odd_and_frac <= 9,1,0),0) + wf_rise_frac = (odd_and_frac >=1) && (odd_and_frac <=8);//IF(odd_and_frac>=1,IF(odd_and_frac <= 8,1,0),0) + + + + //Calculate phase in fractional cycles + a_per_in_octets = (8 * divide) + (frac / 125) ; + a_phase_in_cycles = (phase+10) * a_per_in_octets / 360000 ;//Adding 1 due to rounding errors + pm_rise_frac = (a_phase_in_cycles[7:0] ==8'h00)?8'h00:a_phase_in_cycles[7:0] - {a_phase_in_cycles[7:3],3'b000}; + + dt_calc = ((phase+10) * a_per_in_octets / 8 )/360000 ;//TRUNC(phase* divide / 360); //or_simply (a_per_in_octets / 8) + dt = dt_calc[7:0]; + + pm_rise_frac_filtered = (pm_rise_frac >=8) ? (pm_rise_frac ) - 8: pm_rise_frac ; //((phase_fixed * (divide + frac / 1000)) / 360) - {pm_rise_frac[7:3],3'b000};//$rtoi(clkout0_phase * clkout0_divide / 45);//a; + + dt_int = dt + (& pm_rise_frac[7:4]); //IF(pm_rise_overwriting>7,dt+1,dt) + pm_fall_frac = pm_fall + pm_rise_frac; + pm_fall_frac_filtered = pm_fall + pm_rise_frac - {pm_fall_frac[7:3], 3'b000}; + + div_calc = mmcm_pll_divider(divide, duty_cycle); //Use to determine edge[7], no count[6] + phase_calc = mmcm_pll_phase(divide, phase);// returns{mx[1:0], phase_mux[2:0], delay_time[5:0]} + + mmcm_pll_frac_count_calc[37:0] = + { 2'b00, pm_fall_frac_filtered[2:0], wf_fall_frac, + 1'b0, clkout0_divide_frac[2:0], 1'b1, wf_rise_frac, phase_calc[10:9], div_calc[13:12], dt[5:0], + 3'b000, 1'b0, ht_frac[5:0], lt_frac[5:0] //Removed PM_Rise bits +// pm_rise_frac_filtered[2], pm_rise_frac_filtered[1], pm_rise_frac_filtered[0], 1'b0, ht_frac[5:0], lt_frac[5:0] + } ; + + `ifdef DEBUG + $display("-%d.%d p%d>> :DADDR_9_15 frac30to28.frac_en.wf_r_frac.dt:%b%d%d_%b:DADDR_7_13 pm_f_frac_filtered_29to27.wf_f_frac_26:%b%d:DADDR_8_14.pm_r_frac_filt_15to13.ht_frac.lt_frac:%b%b%b:", divide, frac, phase, clkout0_divide_frac, 1, wf_rise_frac, dt, pm_fall_frac_filtered, wf_fall_frac, 3'b000, ht_frac, lt_frac); + `endif + + end +endfunction + + diff --git a/src/ip/clk_wiz_0/mmcm_pll_drp_func_us_plus_mmcm.vh b/src/ip/clk_wiz_0/mmcm_pll_drp_func_us_plus_mmcm.vh new file mode 100755 index 0000000..fd26211 --- /dev/null +++ b/src/ip/clk_wiz_0/mmcm_pll_drp_func_us_plus_mmcm.vh @@ -0,0 +1,886 @@ +/////////////////////////////////////////////////////////////////////////////// +// +// Company: AMD +// Engineer: Jim Tatsukawa. Updated by Ralf Krueger +// Date: 7/30/2014 +// Design Name: MMCME4 DRP +// Module Name: mmcme4_drp_func.h +// Version: 1.31 +// Target Devices: UltraScale Plus Architecture +// Tool versions: 2017.1 +// Description: This header provides the functions necessary to +// calculate the DRP register values for UltraScal+ MMCM. +// +// Revision Notes: 3/22 - Updating lookup_low/lookup_high (CR) +// 4/13 - Fractional divide function in mmcm_frac_count_calc function +// 2/28/17 - Updated for Ultrascale Plus +// +// (c) Copyright 2009-2017, 2023 Advanced Micro Devices, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of AMD and is protected under U.S. and international copyright +// and other intellectual property laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// AMD, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND AMD HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) AMD shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or AMD had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// AMD products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of AMD products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +//////////////////////////////////////////////////////////// +// +/////////////////////////////////////////////////////////////////////////////// + +// These are user functions that should not be modified. Changes to the defines +// or code within the functions may alter the accuracy of the calculations. + +// Define debug to provide extra messages during elaboration +//`define DEBUG 1 + +// FRAC_PRECISION describes the width of the fractional portion of the fixed +// point numbers. These should not be modified, they are for development only +`define FRAC_PRECISION 10 +// FIXED_WIDTH describes the total size for fixed point calculations(int+frac). +// Warning: L.50 and below will not calculate properly with FIXED_WIDTHs +// greater than 32 +`define FIXED_WIDTH 32 + +// This function takes a fixed point number and rounds it to the nearest +// fractional precision bit. +function [`FIXED_WIDTH:1] round_frac + ( + // Input is (FIXED_WIDTH-FRAC_PRECISION).FRAC_PRECISION fixed point number + input [`FIXED_WIDTH:1] decimal, + + // This describes the precision of the fraction, for example a value + // of 1 would modify the fractional so that instead of being a .16 + // fractional, it would be a .1 (rounded to the nearest 0.5 in turn) + input [`FIXED_WIDTH:1] precision + ); + + begin + + `ifdef DEBUG + $display("round_frac - decimal: %h, precision: %h", decimal, precision); + `endif + // If the fractional precision bit is high then round up + if( decimal[(`FRAC_PRECISION-precision)] == 1'b1) begin + round_frac = decimal + (1'b1 << (`FRAC_PRECISION-precision)); + end else begin + round_frac = decimal; + end + `ifdef DEBUG + $display("round_frac: %h", round_frac); + `endif + end +endfunction + +// This function calculates high_time, low_time, w_edge, and no_count +// of a non-fractional counter based on the divide and duty cycle +// +// NOTE: high_time and low_time are returned as integers between 0 and 63 +// inclusive. 64 should equal 6'b000000 (in other words it is okay to +// ignore the overflow) +function [13:0] mmcm_pll_divider + ( + input [7:0] divide, // Max divide is 128 + input [31:0] duty_cycle // Duty cycle is multiplied by 100,000 + ); + + reg [`FIXED_WIDTH:1] duty_cycle_fix; + + // High/Low time is initially calculated with a wider integer to prevent a + // calculation error when it overflows to 64. + reg [6:0] high_time; + reg [6:0] low_time; + reg w_edge; + reg no_count; + + reg [`FIXED_WIDTH:1] temp; + + begin + // Duty Cycle must be between 0 and 1,000 + if(duty_cycle <=0 || duty_cycle >= 100000) begin +`ifndef SYNTHESIS + $display("ERROR: duty_cycle: %d is invalid", duty_cycle); + `endif + $finish; + end + + // Convert to FIXED_WIDTH-FRAC_PRECISION.FRAC_PRECISION fixed point + duty_cycle_fix = (duty_cycle << `FRAC_PRECISION) / 100_000; + + `ifdef DEBUG + $display("duty_cycle_fix: %h", duty_cycle_fix); + `endif + + // If the divide is 1 nothing needs to be set except the no_count bit. + // Other values are dummies + if(divide == 7'h01) begin + high_time = 7'h01; + w_edge = 1'b0; + low_time = 7'h01; + no_count = 1'b1; + end else begin + temp = round_frac(duty_cycle_fix*divide, 1); + + // comes from above round_frac + high_time = temp[`FRAC_PRECISION+7:`FRAC_PRECISION+1]; + // If the duty cycle * divide rounded is .5 or greater then this bit + // is set. + w_edge = temp[`FRAC_PRECISION]; // comes from round_frac + + // If the high time comes out to 0, it needs to be set to at least 1 + // and w_edge set to 0 + if(high_time == 7'h00) begin + high_time = 7'h01; + w_edge = 1'b0; + end + + if(high_time == divide) begin + high_time = divide - 1; + w_edge = 1'b1; + end + + // Calculate low_time based on the divide setting and set no_count to + // 0 as it is only used when divide is 1. + low_time = divide - high_time; + no_count = 1'b0; + end + + // Set the return value. + mmcm_pll_divider = {w_edge,no_count,high_time[5:0],low_time[5:0]}; + end +endfunction + +// This function calculates mx, delay_time, and phase_mux +// of a non-fractional counter based on the divide and phase +// +// NOTE: The only valid value for the MX bits is 2'b00 to ensure the coarse mux +// is used. +function [10:0] mmcm_pll_phase + ( + // divide must be an integer (use fractional if not) + // assumed that divide already checked to be valid + input [7:0] divide, // Max divide is 128 + + // Phase is given in degrees (-360,000 to 360,000) + input signed [31:0] phase + ); + + reg [`FIXED_WIDTH:1] phase_in_cycles; + reg [`FIXED_WIDTH:1] phase_fixed; + reg [1:0] mx; + reg [5:0] delay_time; + reg [2:0] phase_mux; + + reg [`FIXED_WIDTH:1] temp; + + begin +`ifdef DEBUG + $display("mmcm_phase-divide:%d,phase:%d", divide, phase); +`endif + + if ((phase < -360000) || (phase > 360000)) begin +`ifndef SYNTHESIS + $display("ERROR: phase of $phase is not between -360000 and 360000"); + `endif + $finish; + end + + // If phase is less than 0, convert it to a positive phase shift + // Convert to (FIXED_WIDTH-FRAC_PRECISION).FRAC_PRECISION fixed point + if(phase < 0) begin + phase_fixed = ( (phase + 360000) << `FRAC_PRECISION ) / 1000; + end else begin + phase_fixed = ( phase << `FRAC_PRECISION ) / 1000; + end + + // Put phase in terms of decimal number of vco clock cycles + phase_in_cycles = ( phase_fixed * divide ) / 360; + +`ifdef DEBUG + $display("phase_in_cycles: %h", phase_in_cycles); +`endif + + temp = round_frac(phase_in_cycles, 3); + + // set mx to 2'b00 that the phase mux from the VCO is enabled + mx = 2'b00; + phase_mux = temp[`FRAC_PRECISION:`FRAC_PRECISION-2]; + delay_time = temp[`FRAC_PRECISION+6:`FRAC_PRECISION+1]; + + `ifdef DEBUG + $display("temp: %h", temp); + `endif + + // Setup the return value + mmcm_pll_phase={mx, phase_mux, delay_time}; + end +endfunction + +// This function takes the divide value and outputs the necessary lock values +function [39:0] mmcm_pll_lock_lookup + ( + input [7:0] divide // Max M divide is 128 in UltrascalePlus + ); + + reg [5119:0] lookup; + + begin + lookup = { + // This table is composed of: + // LockRefDly_LockFBDly_LockCnt_LockSatHigh_UnlockCnt + 40'b00110_00110_1111101000_1111101001_0000000001, // M=1 (not allowed) + 40'b00110_00110_1111101000_1111101001_0000000001, // M=2 + 40'b01000_01000_1111101000_1111101001_0000000001, // M=3 + 40'b01011_01011_1111101000_1111101001_0000000001, // M=4 + 40'b01110_01110_1111101000_1111101001_0000000001, // M=5 + 40'b10001_10001_1111101000_1111101001_0000000001, // M=6 + 40'b10011_10011_1111101000_1111101001_0000000001, // M=7 + 40'b10110_10110_1111101000_1111101001_0000000001, + 40'b11001_11001_1111101000_1111101001_0000000001, + 40'b11100_11100_1111101000_1111101001_0000000001, + 40'b11111_11111_1110000100_1111101001_0000000001, + 40'b11111_11111_1100111001_1111101001_0000000001, + 40'b11111_11111_1011101110_1111101001_0000000001, + 40'b11111_11111_1010111100_1111101001_0000000001, + 40'b11111_11111_1010001010_1111101001_0000000001, + 40'b11111_11111_1001110001_1111101001_0000000001, + 40'b11111_11111_1000111111_1111101001_0000000001, + 40'b11111_11111_1000100110_1111101001_0000000001, + 40'b11111_11111_1000001101_1111101001_0000000001, + 40'b11111_11111_0111110100_1111101001_0000000001, + 40'b11111_11111_0111011011_1111101001_0000000001, + 40'b11111_11111_0111000010_1111101001_0000000001, + 40'b11111_11111_0110101001_1111101001_0000000001, + 40'b11111_11111_0110010000_1111101001_0000000001, + 40'b11111_11111_0110010000_1111101001_0000000001, + 40'b11111_11111_0101110111_1111101001_0000000001, + 40'b11111_11111_0101011110_1111101001_0000000001, + 40'b11111_11111_0101011110_1111101001_0000000001, + 40'b11111_11111_0101000101_1111101001_0000000001, + 40'b11111_11111_0101000101_1111101001_0000000001, + 40'b11111_11111_0100101100_1111101001_0000000001, + 40'b11111_11111_0100101100_1111101001_0000000001, + 40'b11111_11111_0100101100_1111101001_0000000001, + 40'b11111_11111_0100010011_1111101001_0000000001, + 40'b11111_11111_0100010011_1111101001_0000000001, + 40'b11111_11111_0100010011_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, + 40'b11111_11111_0011111010_1111101001_0000000001, // M=127 + 40'b11111_11111_0011111010_1111101001_0000000001 // M=128 + }; + + // Set lookup_entry with the explicit bits from lookup with a part select + mmcm_pll_lock_lookup = lookup[ ((128-divide)*40) +: 40]; + `ifdef DEBUG + $display("lock_lookup: %b", mmcm_pll_lock_lookup); + `endif + end +endfunction + +// This function takes the divide value and the bandwidth setting of the MMCM +// and outputs the digital filter settings necessary. +function [9:0] mmcm_pll_filter_lookup + ( + input [7:0] divide, // input [7:0] divide // Max M divide is 128 in UltraScalePlus + input [8*9:0] BANDWIDTH + ); + + reg [1279:0] lookup_low; + reg [1279:0] lookup_high; + + reg [9:0] lookup_entry; + + begin + lookup_low = { + // CP_RES_LFHF + 10'b0011_1111_11, // M=1 - not legal + 10'b0011_1111_11, // M=2 + 10'b0011_1101_11, // M=3 + 10'b0011_0101_11, // M=4 + 10'b0011_1001_11, // M=5 + 10'b0011_1110_11, // M=6 + 10'b0011_1110_11, // M=7 + 10'b0011_0001_11, + 10'b0011_0110_11, + 10'b0011_0110_11, + 10'b0011_0110_11, + 10'b0011_1010_11, + 10'b0011_1010_11, + 10'b0011_1010_11, + 10'b0100_0110_11, + 10'b0011_1100_11, + 10'b1110_0110_11, + 10'b1111_0110_11, + 10'b1110_1010_11, + 10'b1110_1010_11, + 10'b1111_1010_11, + 10'b1111_1010_11, + 10'b1111_1010_11, + 10'b1111_1010_11, + 10'b1111_1010_11, + 10'b1101_1100_11, + 10'b1101_1100_11, + 10'b1101_1100_11, + 10'b1110_1100_11, + 10'b1110_1100_11, + 10'b1110_1100_11, + 10'b1111_1100_11, + 10'b1111_1100_11, + 10'b1111_1100_11, + 10'b1111_1100_11, + 10'b1111_1100_11, + 10'b1111_1100_11, + 10'b1110_0010_11, + 10'b1110_0010_11, + 10'b1110_0010_11, + 10'b1110_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1100_0100_11, + 10'b1100_0100_11, + 10'b1100_0100_11, + 10'b1100_0100_11, + 10'b1100_0100_11, + 10'b1100_0100_11, + 10'b1100_0100_11, + 10'b1100_0100_11, + 10'b1101_0100_11, + 10'b1101_0100_11, + 10'b1101_0100_11, + 10'b1101_0100_11, + 10'b1101_0100_11, + 10'b1101_0100_11, + 10'b1101_0100_11, + 10'b1110_0100_11, + 10'b1110_0100_11, + 10'b1110_0100_11, + 10'b1110_0100_11, + 10'b1110_0100_11, + 10'b1110_0100_11, + 10'b1110_0100_11, + 10'b1110_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1101_1000_11, + 10'b1101_1000_11, + 10'b1101_1000_11, + 10'b1101_1000_11, + 10'b1101_1000_11, + 10'b1101_1000_11, + 10'b1101_1000_11, + 10'b1101_1000_11, // M=127 + 10'b1101_1000_11 // M=128 +}; + + lookup_high = { + // CP_RES_LFHF + 10'b0111_1111_11, // M=1 - not legal + 10'b0111_1111_11, // M=2 + 10'b1110_1111_11, // M=3 + 10'b1111_1111_11, // M=4 + 10'b1111_1011_11, // M=5 + 10'b1111_1101_11, // M=6 + 10'b1111_0011_11, // M=7 + 10'b1110_0101_11, + 10'b1111_1001_11, + 10'b1111_1001_11, + 10'b1110_1110_11, + 10'b1111_1110_11, + 10'b1111_0001_11, + 10'b1111_0001_11, + 10'b1111_0001_11, + 10'b1110_0110_11, + 10'b1110_0110_11, + 10'b1111_0110_11, + 10'b1110_1010_11, + 10'b1110_1010_11, + 10'b1111_1010_11, + 10'b1111_1010_11, + 10'b1111_1010_11, + 10'b1111_1010_11, + 10'b1111_1010_11, + 10'b1101_1100_11, + 10'b1101_1100_11, + 10'b1101_1100_11, + 10'b1110_1100_11, + 10'b1110_1100_11, + 10'b1110_1100_11, + 10'b1111_1100_11, + 10'b1111_1100_11, + 10'b1111_1100_11, + 10'b1111_1100_11, + 10'b1111_1100_11, + 10'b1111_1100_11, + 10'b1110_0010_11, + 10'b1110_0010_11, + 10'b1110_0010_11, + 10'b1110_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1111_0010_11, + 10'b1100_0100_11, + 10'b1100_0100_11, + 10'b1100_0100_11, + 10'b1100_0100_11, + 10'b1100_0100_11, + 10'b1100_0100_11, + 10'b1100_0100_11, + 10'b1100_0100_11, + 10'b1101_0100_11, + 10'b1101_0100_11, + 10'b1101_0100_11, + 10'b1101_0100_11, + 10'b1101_0100_11, + 10'b1101_0100_11, + 10'b1101_0100_11, + 10'b1110_0100_11, + 10'b1110_0100_11, + 10'b1110_0100_11, + 10'b1110_0100_11, + 10'b1110_0100_11, + 10'b1110_0100_11, + 10'b1110_0100_11, + 10'b1110_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1111_0100_11, + 10'b1101_1000_11, + 10'b1101_1000_11, + 10'b1101_1000_11, + 10'b1101_1000_11, + 10'b1101_1000_11, + 10'b1101_1000_11, + 10'b1101_1000_11, + 10'b1101_1000_11, + 10'b1101_1000_11 // M=128 +}; + + // Set lookup_entry with the explicit bits from lookup with a part select + if(BANDWIDTH == "LOW") begin + // Low Bandwidth + mmcm_pll_filter_lookup = lookup_low[ ((128-divide)*10) +: 10]; + end else begin + // High or optimized bandwidth + mmcm_pll_filter_lookup = lookup_high[ ((128-divide)*10) +: 10]; + end + + `ifdef DEBUG + $display("filter_lookup: %b", mmcm_pll_filter_lookup); + `endif + end +endfunction + +// This function takes in the divide, phase, and duty cycle +// setting to calculate the upper and lower counter registers. +function [37:0] mmcm_pll_count_calc + ( + input [7:0] divide, // Max divide is 128 + input signed [31:0] phase, + input [31:0] duty_cycle // Multiplied by 100,000 + ); + + reg [13:0] div_calc; + reg [16:0] phase_calc; + + begin + `ifdef DEBUG + $display("mmcm_pll_count_calc- divide:%h, phase:%d, duty_cycle:%d", + divide, phase, duty_cycle); + `endif + + // w_edge[13], no_count[12], high_time[11:6], low_time[5:0] + div_calc = mmcm_pll_divider(divide, duty_cycle); + // mx[10:9], pm[8:6], dt[5:0] + phase_calc = mmcm_pll_phase(divide, phase); + + // Return value is the upper and lower address of counter + // Upper address is: + // RESERVED [31:26] + // MX [25:24] + // EDGE [23] + // NOCOUNT [22] + // DELAY_TIME [21:16] + // Lower Address is: + // PHASE_MUX [15:13] + // RESERVED [12] + // HIGH_TIME [11:6] + // LOW_TIME [5:0] + + `ifdef DEBUG + $display("div:%d dc:%d phase:%d ht:%d lt:%d ed:%d nc:%d mx:%d dt:%d pm:%d", + divide, duty_cycle, phase, div_calc[11:6], div_calc[5:0], + div_calc[13], div_calc[12], + phase_calc[16:15], phase_calc[5:0], phase_calc[14:12]); + `endif + + mmcm_pll_count_calc = + { + // Upper Address + 6'h00, phase_calc[10:9], div_calc[13:12], phase_calc[5:0], + // Lower Address + phase_calc[8:6], 1'b0, div_calc[11:0] + }; + end +endfunction + + +// This function takes in the divide, phase, and duty cycle +// setting to calculate the upper and lower counter registers. +// for fractional multiply/divide functions. +// +// +function [37:0] mmcm_frac_count_calc + ( + input [7:0] divide, // Max divide is 128 + input signed [31:0] phase, + input [31:0] duty_cycle, // Multiplied by 100,000. Not programmable in fractional + input [9:0] frac // Multiplied by 1000 + ); + + //Required for fractional divide calculations + reg [7:0] lt_frac; + reg [7:0] ht_frac; + + reg /*[7:0]*/ wf_fall_frac; + reg /*[7:0]*/ wf_rise_frac; + + reg [31:0] a; + reg [7:0] pm_rise_frac_filtered ; + reg [7:0] pm_fall_frac_filtered ; + reg [7:0] clkout0_divide_int; + reg [2:0] clkout0_divide_frac; + reg [7:0] even_part_high; + reg [7:0] even_part_low; + + reg [7:0] odd; + reg [7:0] odd_and_frac; + + reg [7:0] pm_fall; + reg [7:0] pm_rise; + reg [7:0] dt; + reg [7:0] dt_int; + reg [63:0] dt_calc; + + reg [7:0] pm_rise_frac; + reg [7:0] pm_fall_frac; + + reg [31:0] a_per_in_octets; + reg [31:0] a_phase_in_cycles; + + parameter precision = 0.125; + + reg [31:0] phase_fixed; // changed to 31:0 from 32:1 jt 5/2/11 + reg [31: 0] phase_pos; + reg [31: 0] phase_vco; + reg [31:0] temp;// changed to 31:0 from 32:1 jt 5/2/11 + reg [13:0] div_calc; + reg [16:0] phase_calc; + + begin + `ifdef DEBUG + $display("mmcm_frac_count_calc- divide:%h, phase:%d, duty_cycle:%d", + divide, phase, duty_cycle); + `endif + + //convert phase to fixed + if ((phase < -360000) || (phase > 360000)) begin +`ifndef SYNTHESIS + $display("ERROR: phase of $phase is not between -360000 and 360000"); + `endif + $finish; + end + + + // Return value is + // Transfer data + // RESERVED [37:36] + // FRAC_TIME [35:33] + // FRAC_WF_FALL [32] + // Upper address is: + // RESERVED [31:26] + // MX [25:24] + // EDGE [23] + // NOCOUNT [22] + // DELAY_TIME [21:16] + // Lower Address is: + // PHASE_MUX [15:13] + // RESERVED [12] + // HIGH_TIME [11:6] + // LOW_TIME [5:0] + + + + clkout0_divide_frac = frac / 125; + clkout0_divide_int = divide; + + even_part_high = clkout0_divide_int >> 1;//$rtoi(clkout0_divide_int / 2); + even_part_low = even_part_high; + + odd = clkout0_divide_int - even_part_high - even_part_low; + odd_and_frac = (8*odd) + clkout0_divide_frac; + + lt_frac = even_part_high - (odd_and_frac <= 9);//IF(odd_and_frac>9,even_part_high, even_part_high - 1) + ht_frac = even_part_low - (odd_and_frac <= 8);//IF(odd_and_frac>8,even_part_low, even_part_low- 1) + + pm_fall = {odd[6:0],2'b00} + {6'h00, clkout0_divide_frac[2:1]}; // using >> instead of clkout0_divide_frac / 2 + pm_rise = 0; //0 + + wf_fall_frac = ((odd_and_frac >=2) && (odd_and_frac <=9)) || (clkout0_divide_int == 2 && clkout0_divide_frac == 1); //IF(odd_and_frac>=2,IF(odd_and_frac <= 9,1,0),0) + wf_rise_frac = (odd_and_frac >=1) && (odd_and_frac <=8); //IF(odd_and_frac>=1,IF(odd_and_frac <= 8,1,0),0) + + + + //Calculate phase in fractional cycles + a_per_in_octets = (8 * divide) + (frac / 125) ; + a_phase_in_cycles = (phase+10) * a_per_in_octets / 360000 ;//Adding 1 due to rounding errors + pm_rise_frac = (a_phase_in_cycles[7:0] ==8'h00)?8'h00:a_phase_in_cycles[7:0] - {a_phase_in_cycles[7:3],3'b000}; + + dt_calc = ((phase+10) * a_per_in_octets / 8 )/360000 ;//TRUNC(phase* divide / 360); //or_simply (a_per_in_octets / 8) + dt = dt_calc[7:0]; + + pm_rise_frac_filtered = (pm_rise_frac >=8) ? (pm_rise_frac ) - 8: pm_rise_frac ; //((phase_fixed * (divide + frac / 1000)) / 360) - {pm_rise_frac[7:3],3'b000};//$rtoi(clkout0_phase * clkout0_divide / 45);//a; + + dt_int = dt + (& pm_rise_frac[7:4]); //IF(pm_rise_overwriting>7,dt+1,dt) + pm_fall_frac = pm_fall + pm_rise_frac; + pm_fall_frac_filtered = pm_fall + pm_rise_frac - {pm_fall_frac[7:3], 3'b000}; + + div_calc = mmcm_pll_divider(divide, duty_cycle); //Use to determine edge[7], no count[6] + phase_calc = mmcm_pll_phase(divide, phase);// returns{mx[1:0], phase_mux[2:0], delay_time[5:0]} + + mmcm_frac_count_calc[37:0] = + { 2'b00, pm_fall_frac_filtered[2:0], wf_fall_frac, + 1'b0, clkout0_divide_frac[2:0], 1'b1, wf_rise_frac, phase_calc[10:9], 2'b00, dt[5:0], + pm_rise_frac_filtered[2], pm_rise_frac_filtered[1], pm_rise_frac_filtered[0], 1'b0, ht_frac[5:0], lt_frac[5:0] + } ; + + `ifdef DEBUG + $display("-%d.%d p%d>> :DADDR_9_15 frac30to28.frac_en.wf_r_frac.dt:%b%d%d_%b:DADDR_7_13 pm_f_frac_filtered_29to27.wf_f_frac_26:%b%d:DADDR_8_14.pm_r_frac_filt_15to13.ht_frac.lt_frac:%b%b%b:", divide, frac, phase, clkout0_divide_frac, 1, wf_rise_frac, dt, pm_fall_frac_filtered, wf_fall_frac, pm_rise_frac_filtered, ht_frac, lt_frac); + `endif + + end +endfunction + diff --git a/src/ip/clk_wiz_0/mmcm_pll_drp_func_us_plus_pll.vh b/src/ip/clk_wiz_0/mmcm_pll_drp_func_us_plus_pll.vh new file mode 100755 index 0000000..0899943 --- /dev/null +++ b/src/ip/clk_wiz_0/mmcm_pll_drp_func_us_plus_pll.vh @@ -0,0 +1,561 @@ +/////////////////////////////////////////////////////////////////////////////// +// +// Company: AMD +// Engineer: Jim Tatsukawa, Ralf Krueger, updated for Ultrascale+ +// Date: 6/15/2015 +// Design Name: PLLE4 DRP +// Module Name: plle4_drp_func.h +// Version: 2.0 +// Target Devices: UltraScale+ Architecture +// Tool versions: 2017.1 +// Description: This header provides the functions necessary to +// calculate the DRP register values for the V6 PLL. +// +// Revision Notes: 8/11 - PLLE3 updated for PLLE3 file 4564419 +// Revision Notes: 6/15 - pll_filter_lookup fixed for max M of 19 +// M_Rise bits have been removed for PLLE3 +// Revision Notes: 2/28/17 - pll_filter_lookup and CPRES updated for +// Ultrascale+ and for max M of 21 +// +// (c) Copyright 2009-2017, 2023 Advanced Micro Devices, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of AMD and is protected under U.S. and international copyright +// and other intellectual property laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// AMD, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND AMD HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) AMD shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or AMD had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// AMD products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of AMD products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +//////////////////////////////////////////////////////////// +// +/////////////////////////////////////////////////////////////////////////////// + +// These are user functions that should not be modified. Changes to the defines +// or code within the functions may alter the accuracy of the calculations. + +// Define debug to provide extra messages durring elaboration +//`define DEBUG 1 + +// FRAC_PRECISION describes the width of the fractional portion of the fixed +// point numbers. These should not be modified, they are for development +// only +`define FRAC_PRECISION 10 +// FIXED_WIDTH describes the total size for fixed point calculations(int+frac). +// Warning: L.50 and below will not calculate properly with FIXED_WIDTHs +// greater than 32 +`define FIXED_WIDTH 32 + +// This function takes a fixed point number and rounds it to the nearest +// fractional precision bit. +function [`FIXED_WIDTH:1] round_frac + ( + // Input is (FIXED_WIDTH-FRAC_PRECISION).FRAC_PRECISION fixed point number + input [`FIXED_WIDTH:1] decimal, + + // This describes the precision of the fraction, for example a value + // of 1 would modify the fractional so that instead of being a .16 + // fractional, it would be a .1 (rounded to the nearest 0.5 in turn) + input [`FIXED_WIDTH:1] precision + ); + + begin + + `ifdef DEBUG + $display("round_frac - decimal: %h, precision: %h", decimal, precision); + `endif + // If the fractional precision bit is high then round up + if( decimal[(`FRAC_PRECISION-precision)] == 1'b1) begin + round_frac = decimal + (1'b1 << (`FRAC_PRECISION-precision)); + end else begin + round_frac = decimal; + end + `ifdef DEBUG + $display("round_frac: %h", round_frac); + `endif + end +endfunction + +// This function calculates high_time, low_time, w_edge, and no_count +// of a non-fractional counter based on the divide and duty cycle +// +// NOTE: high_time and low_time are returned as integers between 0 and 63 +// inclusive. 64 should equal 6'b000000 (in other words it is okay to +// ignore the overflow) +function [13:0] mmcm_pll_divider + ( + input [7:0] divide, // Max divide is 128 + input [31:0] duty_cycle // Duty cycle is multiplied by 100,000 + ); + + reg [`FIXED_WIDTH:1] duty_cycle_fix; + + // High/Low time is initially calculated with a wider integer to prevent a + // calculation error when it overflows to 64. + reg [6:0] high_time; + reg [6:0] low_time; + reg w_edge; + reg no_count; + + reg [`FIXED_WIDTH:1] temp; + + begin + // Duty Cycle must be between 0 and 1,000 + if(duty_cycle <=0 || duty_cycle >= 100000) begin +`ifndef SYNTHESIS + $display("ERROR: duty_cycle: %d is invalid", duty_cycle); + `endif + $finish; + end + + // Convert to FIXED_WIDTH-FRAC_PRECISION.FRAC_PRECISION fixed point + duty_cycle_fix = (duty_cycle << `FRAC_PRECISION) / 100_000; + + `ifdef DEBUG + $display("duty_cycle_fix: %h", duty_cycle_fix); + `endif + + // If the divide is 1 nothing needs to be set except the no_count bit. + // Other values are dummies + if(divide == 7'h01) begin + high_time = 7'h01; + w_edge = 1'b0; + low_time = 7'h01; + no_count = 1'b1; + end else begin + temp = round_frac(duty_cycle_fix*divide, 1); + + // comes from above round_frac + high_time = temp[`FRAC_PRECISION+7:`FRAC_PRECISION+1]; + // If the duty cycle * divide rounded is .5 or greater then this bit + // is set. + w_edge = temp[`FRAC_PRECISION]; // comes from round_frac + + // If the high time comes out to 0, it needs to be set to at least 1 + // and w_edge set to 0 + if(high_time == 7'h00) begin + high_time = 7'h01; + w_edge = 1'b0; + end + + if(high_time == divide) begin + high_time = divide - 1; + w_edge = 1'b1; + end + + // Calculate low_time based on the divide setting and set no_count to + // 0 as it is only used when divide is 1. + low_time = divide - high_time; + no_count = 1'b0; + end + + // Set the return value. + mmcm_pll_divider = {w_edge,no_count,high_time[5:0],low_time[5:0]}; + end +endfunction + +// This function calculates mx, delay_time, and phase_mux +// of a non-fractional counter based on the divide and phase +// +// NOTE: The only valid value for the MX bits is 2'b00 to ensure the coarse mux +// is used. +function [10:0] mmcm_pll_phase + ( + // divide must be an integer (use fractional if not) + // assumed that divide already checked to be valid + input [7:0] divide, // Max divide is 128 + + // Phase is given in degrees (-360,000 to 360,000) + input signed [31:0] phase + ); + + reg [`FIXED_WIDTH:1] phase_in_cycles; + reg [`FIXED_WIDTH:1] phase_fixed; + reg [1:0] mx; + reg [5:0] delay_time; + reg [2:0] phase_mux; + + reg [`FIXED_WIDTH:1] temp; + + begin +`ifdef DEBUG + $display("pll_phase-divide:%d,phase:%d", + divide, phase); +`endif + + if ((phase < -360000) || (phase > 360000)) begin +`ifndef SYNTHESIS + $display("ERROR: phase of $phase is not between -360000 and 360000"); +`endif + $finish; + end + + // If phase is less than 0, convert it to a positive phase shift + // Convert to (FIXED_WIDTH-FRAC_PRECISION).FRAC_PRECISION fixed point + if(phase < 0) begin + phase_fixed = ( (phase + 360000) << `FRAC_PRECISION ) / 1000; + end else begin + phase_fixed = ( phase << `FRAC_PRECISION ) / 1000; + end + + // Put phase in terms of decimal number of vco clock cycles + phase_in_cycles = ( phase_fixed * divide ) / 360; + +`ifdef DEBUG + $display("phase_in_cycles: %h", phase_in_cycles); +`endif + + + temp = round_frac(phase_in_cycles, 3); + + // set mx to 2'b00 that the phase mux from the VCO is enabled + mx = 2'b00; + phase_mux = temp[`FRAC_PRECISION:`FRAC_PRECISION-2]; + delay_time = temp[`FRAC_PRECISION+6:`FRAC_PRECISION+1]; + + `ifdef DEBUG + $display("temp: %h", temp); + `endif + + // Setup the return value + mmcm_pll_phase={mx, phase_mux, delay_time}; + end +endfunction + +// This function takes the divide value and outputs the necessary lock values +function [39:0] mmcm_pll_lock_lookup + ( + input [6:0] divide // Max divide is 21 + ); + + reg [839:0] lookup; + + begin + lookup = { + // This table is composed of: + // LockRefDly_LockFBDly_LockCnt_LockSatHigh_UnlockCnt + 40'b00110_00110_1111101000_1111101001_0000000001, //1 illegal in Ultrascale+ + 40'b00110_00110_1111101000_1111101001_0000000001, //2 + 40'b01000_01000_1111101000_1111101001_0000000001, //3 + 40'b01011_01011_1111101000_1111101001_0000000001, //4 + 40'b01110_01110_1111101000_1111101001_0000000001, //5 + 40'b10001_10001_1111101000_1111101001_0000000001, //6 + 40'b10011_10011_1111101000_1111101001_0000000001, //7 + 40'b10110_10110_1111101000_1111101001_0000000001, //8 + 40'b11001_11001_1111101000_1111101001_0000000001, //9 + 40'b11100_11100_1111101000_1111101001_0000000001, //10 + 40'b11111_11111_1110000100_1111101001_0000000001, //11 + 40'b11111_11111_1100111001_1111101001_0000000001, //12 + 40'b11111_11111_1011101110_1111101001_0000000001, //13 + 40'b11111_11111_1010111100_1111101001_0000000001, //14 + 40'b11111_11111_1010001010_1111101001_0000000001, //15 + 40'b11111_11111_1001110001_1111101001_0000000001, //16 + 40'b11111_11111_1000111111_1111101001_0000000001, //17 + 40'b11111_11111_1000100110_1111101001_0000000001, //18 + 40'b11111_11111_1000001101_1111101001_0000000001, //19 + 40'b11111_11111_0111110100_1111101001_0000000001, //20 + 40'b11111_11111_0111011011_1111101001_0000000001 //21 + }; + + // Set lookup_entry with the explicit bits from lookup with a part select + mmcm_pll_lock_lookup = lookup[ ((21-divide)*40) +: 40]; + `ifdef DEBUG + $display("lock_lookup: %b", pll_lock_lookup); + `endif + end +endfunction + +// This function takes the divide value and the bandwidth setting of the PLL +// and outputs the digital filter settings necessary. Removing bandwidth setting for PLLE3. +function [9:0] mmcm_pll_filter_lookup + ( + input [6:0] divide // Max divide is 21 + ); + + reg [209:0] lookup; + reg [9:0] lookup_entry; + + begin + + lookup = { + // CP_RES_LFHF + 10'b0011_0111_11, //1 not legal in Ultrascale+ + 10'b0011_0111_11, //2 + 10'b0011_0011_11, //3 + 10'b0011_1001_11, //4 + 10'b0011_0001_11, //5 + 10'b0100_1110_11, //6 + 10'b0011_0110_11, //7 + 10'b0011_1010_11, //8 + 10'b0111_1001_11, //9 + 10'b0111_1001_11, //10 + 10'b0101_0110_11, //11 + 10'b1100_0101_11, //12 + 10'b0101_1010_11, //13 + 10'b0110_0110_11, //14 + 10'b0110_1010_11, //15 + 10'b0111_0110_11, //16 + 10'b1111_0101_11, //17 + 10'b1100_0110_11, //18 + 10'b1110_0001_11, //19 + 10'b1101_0110_11, //20 + 10'b1111_0001_11 //21 + }; + + mmcm_pll_filter_lookup = lookup [ ((21-divide)*10) +: 10]; + + `ifdef DEBUG + $display("filter_lookup: %b", pll_filter_lookup); + `endif + end +endfunction + +// This function set the CLKOUTPHY divide settings to match +// the desired CLKOUTPHY_MODE setting. To create VCO_X2, then +// the CLKOUTPHY will be set to 2'b00 since the VCO is internally +// doubled and 2'b00 will represent divide by 1. Similarly "VCO" +// will need to divide the doubled clock VCO clock frequency by +// 2 therefore 2'b01 will match a divide by 2.And VCO_HALF will +// need to divide the doubled VCO by 4, therefore 2'b10 +function [9:0] mmcm_pll_clkoutphy_calc + ( + input [8*9:0] CLKOUTPHY_MODE + ); + + if(CLKOUTPHY_MODE == "VCO_X2") begin + mmcm_pll_clkoutphy_calc= 2'b00; + end else if(CLKOUTPHY_MODE == "VCO") begin + mmcm_pll_clkoutphy_calc= 2'b01; + end else if(CLKOUTPHY_MODE == "CLKIN") begin + mmcm_pll_clkoutphy_calc= 2'b11; + end else begin // Assume "VCO_HALF" + mmcm_pll_clkoutphy_calc= 2'b10; + end + +endfunction + + +// This function takes in the divide, phase, and duty cycle +// setting to calculate the upper and lower counter registers. +function [37:0] mmcm_pll_count_calc + ( + input [7:0] divide, // Max divide is 128 + input signed [31:0] phase, + input [31:0] duty_cycle // Multiplied by 100,000 + ); + + reg [13:0] div_calc; + reg [16:0] phase_calc; + + begin + `ifdef DEBUG + $display("pll_count_calc- divide:%h, phase:%d, duty_cycle:%d", + divide, phase, duty_cycle); + `endif + + // w_edge[13], no_count[12], high_time[11:6], low_time[5:0] + div_calc = mmcm_pll_divider(divide, duty_cycle); + // mx[10:9], pm[8:6], dt[5:0] + phase_calc = mmcm_pll_phase(divide, phase); + + // Return value is the upper and lower address of counter + // Upper address is: + // RESERVED [31:26] + // MX [25:24] + // EDGE [23] + // NOCOUNT [22] + // DELAY_TIME [21:16] + // Lower Address is: + // PHASE_MUX [15:13] + // RESERVED [12] + // HIGH_TIME [11:6] + // LOW_TIME [5:0] + + `ifdef DEBUG + $display("div:%d dc:%d phase:%d ht:%d lt:%d ed:%d nc:%d mx:%d dt:%d pm:%d", + divide, duty_cycle, phase, div_calc[11:6], div_calc[5:0], + div_calc[13], div_calc[12], + phase_calc[16:15], phase_calc[5:0], 3'b000); //Removed PM_Rise bits + `endif + + mmcm_pll_count_calc = + { + // Upper Address + 6'h00, phase_calc[10:9], div_calc[13:12], phase_calc[5:0], + // Lower Address + phase_calc[8:6], 1'b0, div_calc[11:0] + }; + end +endfunction + + +// This function takes in the divide, phase, and duty cycle +// setting to calculate the upper and lower counter registers. +// for fractional multiply/divide functions. +// +// +function [37:0] mmcm_pll_frac_count_calc + ( + input [7:0] divide, // Max divide is 128 + input signed [31:0] phase, + input [31:0] duty_cycle, // Multiplied by 1,000 + input [9:0] frac // Multiplied by 1000 + ); + + //Required for fractional divide calculations + reg [7:0] lt_frac; + reg [7:0] ht_frac; + + reg /*[7:0]*/ wf_fall_frac; + reg /*[7:0]*/ wf_rise_frac; + + reg [31:0] a; + reg [7:0] pm_rise_frac_filtered ; + reg [7:0] pm_fall_frac_filtered ; + reg [7:0] clkout0_divide_int; + reg [2:0] clkout0_divide_frac; + reg [7:0] even_part_high; + reg [7:0] even_part_low; + + reg [7:0] odd; + reg [7:0] odd_and_frac; + + reg [7:0] pm_fall; + reg [7:0] pm_rise; + reg [7:0] dt; + reg [7:0] dt_int; + reg [63:0] dt_calc; + + reg [7:0] pm_rise_frac; + reg [7:0] pm_fall_frac; + + reg [31:0] a_per_in_octets; + reg [31:0] a_phase_in_cycles; + + parameter precision = 0.125; + + reg [31:0] phase_fixed; // changed to 31:0 from 32:1 jt 5/2/11 + reg [31: 0] phase_pos; + reg [31: 0] phase_vco; + reg [31:0] temp;// changed to 31:0 from 32:1 jt 5/2/11 + reg [13:0] div_calc; + reg [16:0] phase_calc; + + begin + `ifdef DEBUG + $display("pll_frac_count_calc- divide:%h, phase:%d, duty_cycle:%d", + divide, phase, duty_cycle); + `endif + + //convert phase to fixed + if ((phase < -360000) || (phase > 360000)) begin +`ifndef SYNTHESIS + $display("ERROR: phase of $phase is not between -360000 and 360000"); + `endif + $finish; + end + + + // Return value is + // Transfer data + // RESERVED [37:36] + // FRAC_TIME [35:33] + // FRAC_WF_FALL [32] + // Upper address is: + // RESERVED [31:26] + // MX [25:24] + // EDGE [23] + // NOCOUNT [22] + // DELAY_TIME [21:16] + // Lower Address is: + // PHASE_MUX [15:13] + // RESERVED [12] + // HIGH_TIME [11:6] + // LOW_TIME [5:0] + + + + clkout0_divide_frac = frac / 125; + clkout0_divide_int = divide; + + even_part_high = clkout0_divide_int >> 1;//$rtoi(clkout0_divide_int / 2); + even_part_low = even_part_high; + + odd = clkout0_divide_int - even_part_high - even_part_low; + odd_and_frac = (8*odd) + clkout0_divide_frac; + + lt_frac = even_part_high - (odd_and_frac <= 9);//IF(odd_and_frac>9,even_part_high, even_part_high - 1) + ht_frac = even_part_low - (odd_and_frac <= 8);//IF(odd_and_frac>8,even_part_low, even_part_low- 1) + + pm_fall = {odd[6:0],2'b00} + {6'h00, clkout0_divide_frac[2:1]}; // using >> instead of clkout0_divide_frac / 2 + pm_rise = 0; //0 + + wf_fall_frac = (odd_and_frac >=2) && (odd_and_frac <=9);//IF(odd_and_frac>=2,IF(odd_and_frac <= 9,1,0),0) + wf_rise_frac = (odd_and_frac >=1) && (odd_and_frac <=8);//IF(odd_and_frac>=1,IF(odd_and_frac <= 8,1,0),0) + + + + //Calculate phase in fractional cycles + a_per_in_octets = (8 * divide) + (frac / 125) ; + a_phase_in_cycles = (phase+10) * a_per_in_octets / 360000 ;//Adding 1 due to rounding errors + pm_rise_frac = (a_phase_in_cycles[7:0] ==8'h00)?8'h00:a_phase_in_cycles[7:0] - {a_phase_in_cycles[7:3],3'b000}; + + dt_calc = ((phase+10) * a_per_in_octets / 8 )/360000 ;//TRUNC(phase* divide / 360); //or_simply (a_per_in_octets / 8) + dt = dt_calc[7:0]; + + pm_rise_frac_filtered = (pm_rise_frac >=8) ? (pm_rise_frac ) - 8: pm_rise_frac ; //((phase_fixed * (divide + frac / 1000)) / 360) - {pm_rise_frac[7:3],3'b000};//$rtoi(clkout0_phase * clkout0_divide / 45);//a; + + dt_int = dt + (& pm_rise_frac[7:4]); //IF(pm_rise_overwriting>7,dt+1,dt) + pm_fall_frac = pm_fall + pm_rise_frac; + pm_fall_frac_filtered = pm_fall + pm_rise_frac - {pm_fall_frac[7:3], 3'b000}; + + div_calc = mmcm_pll_divider(divide, duty_cycle); //Use to determine edge[7], no count[6] + phase_calc = mmcm_pll_phase(divide, phase);// returns{mx[1:0], phase_mux[2:0], delay_time[5:0]} + + mmcm_pll_frac_count_calc[37:0] = + { 2'b00, pm_fall_frac_filtered[2:0], wf_fall_frac, + 1'b0, clkout0_divide_frac[2:0], 1'b1, wf_rise_frac, phase_calc[10:9], div_calc[13:12], dt[5:0], + 3'b000, 1'b0, ht_frac[5:0], lt_frac[5:0] //Removed PM_Rise bits + } ; + + `ifdef DEBUG + $display("-%d.%d p%d>> :DADDR_9_15 frac30to28.frac_en.wf_r_frac.dt:%b%d%d_%b:DADDR_7_13 pm_f_frac_filtered_29to27.wf_f_frac_26:%b%d:DADDR_8_14.pm_r_frac_filt_15to13.ht_frac.lt_frac:%b%b%b:", divide, frac, phase, clkout0_divide_frac, 1, wf_rise_frac, dt, pm_fall_frac_filtered, wf_fall_frac, 3'b000, ht_frac, lt_frac); + `endif + + end +endfunction + diff --git a/vivado.jou b/vivado.jou new file mode 100644 index 0000000..4057a4e --- /dev/null +++ b/vivado.jou @@ -0,0 +1,25 @@ +#----------------------------------------------------------- +# Vivado v2024.1 (64-bit) +# SW Build 5076996 on Wed May 22 18:36:09 MDT 2024 +# IP Build 5075265 on Wed May 22 21:45:21 MDT 2024 +# SharedData Build 5076995 on Wed May 22 18:29:18 MDT 2024 +# Start of session at: Wed Feb 26 09:51:27 2025 +# Process ID: 9416 +# Current directory: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso +# Command line: vivado +# Log file: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/vivado.log +# Journal file: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/vivado.jou +# Running On :fl-tp-br-604 +# Platform :Ubuntu +# Operating System :Ubuntu 24.04.1 LTS +# Processor Detail :Intel(R) Core(TM) i5-10500 CPU @ 3.10GHz +# CPU Frequency :4294.632 MHz +# CPU Physical cores:6 +# CPU Logical cores :12 +# Host memory :16467 MB +# Swap memory :4294 MB +# Total Virtual :20762 MB +# Available Virtual :17504 MB +#----------------------------------------------------------- +start_gui +source ./proj/create_project.tcl diff --git a/vivado.log b/vivado.log new file mode 100644 index 0000000..5171770 --- /dev/null +++ b/vivado.log @@ -0,0 +1,97 @@ +#----------------------------------------------------------- +# Vivado v2024.1 (64-bit) +# SW Build 5076996 on Wed May 22 18:36:09 MDT 2024 +# IP Build 5075265 on Wed May 22 21:45:21 MDT 2024 +# SharedData Build 5076995 on Wed May 22 18:29:18 MDT 2024 +# Start of session at: Wed Feb 26 09:51:27 2025 +# Process ID: 9416 +# Current directory: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso +# Command line: vivado +# Log file: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/vivado.log +# Journal file: /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso/vivado.jou +# Running On :fl-tp-br-604 +# Platform :Ubuntu +# Operating System :Ubuntu 24.04.1 LTS +# Processor Detail :Intel(R) Core(TM) i5-10500 CPU @ 3.10GHz +# CPU Frequency :4294.632 MHz +# CPU Physical cores:6 +# CPU Logical cores :12 +# Host memory :16467 MB +# Swap memory :4294 MB +# Total Virtual :20762 MB +# Available Virtual :17504 MB +#----------------------------------------------------------- +start_gui +WARNING: [Board 49-26] cannot add Board Part xilinx.com:vek280_es:part0:1.0 available at /usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/xhub/boards/XilinxBoardStore/boards/Xilinx/vek280/es/rev_a/1.0/board.xml as part xcve2802-vsvh1760-2lp-e-s-es1 specified in board_part file is either invalid or not available +WARNING: [Board 49-26] cannot add Board Part xilinx.com:vek280_es:part0:1.1 available at /usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/xhub/boards/XilinxBoardStore/boards/Xilinx/vek280/es/rev_a/1.1/board.xml as part xcve2802-vsvh1760-2lp-e-s-es1 specified in board_part file is either invalid or not available +WARNING: [Board 49-26] cannot add Board Part xilinx.com:vek280_es_revb:part0:1.0 available at /usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/xhub/boards/XilinxBoardStore/boards/Xilinx/vek280/es/rev_b/1.0/board.xml as part xcve2802-vsvh1760-2mp-e-s-es1 specified in board_part file is either invalid or not available +WARNING: [Board 49-26] cannot add Board Part xilinx.com:vek280_es_revb:part0:1.1 available at /usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/xhub/boards/XilinxBoardStore/boards/Xilinx/vek280/es/rev_b/1.1/board.xml as part xcve2802-vsvh1760-2mp-e-s-es1 specified in board_part file is either invalid or not available +WARNING: [Board 49-26] cannot add Board Part xilinx.com:vhk158_es:part0:1.0 available at /usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/xhub/boards/XilinxBoardStore/boards/Xilinx/vhk158/es/1.0/board.xml as part xcvh1582-vsva3697-2mp-e-s-es1 specified in board_part file is either invalid or not available +WARNING: [Board 49-26] cannot add Board Part xilinx.com:vhk158_es:part0:1.1 available at /usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/xhub/boards/XilinxBoardStore/boards/Xilinx/vhk158/es/1.1/board.xml as part xcvh1582-vsva3697-2mp-e-s-es1 specified in board_part file is either invalid or not available +WARNING: [Board 49-26] cannot add Board Part xilinx.com:zcu208ld:part0:2.0 available at /usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/xhub/boards/XilinxBoardStore/boards/Xilinx/zcu208ld/production/2.0/board.xml as part xczu58dr-fsvg1517-2-i specified in board_part file is either invalid or not available +WARNING: [Board 49-26] cannot add Board Part xilinx.com:zcu216ld:part0:2.0 available at /usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/xhub/boards/XilinxBoardStore/boards/Xilinx/zcu216ld/production/2.0/board.xml as part xczu59dr-ffvf1760-2-i specified in board_part file is either invalid or not available +WARNING: [Board 49-26] cannot add Board Part xilinx.com:zcu670ld:part0:1.0 available at /usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/xhub/boards/XilinxBoardStore/boards/Xilinx/zcu670ld/1.0/board.xml as part xczu57dr-fsve1156-2-i specified in board_part file is either invalid or not available +source ./proj/create_project.tcl +# if {[info exists ::create_path]} { +# set dest_dir $::create_path +# } else { +# set dest_dir [pwd] +# } +# puts "INFO: Creating new project in $dest_dir" +INFO: Creating new project in /homes/c24masso/Bureau/tp-vhdl-mee/UE-medcon/tp-filtre-etudiant-c24masso +# set proj_name "AudioProc" +# set origin_dir ".." +# set orig_proj_dir "[file normalize "$origin_dir/proj"]" +# set src_dir $origin_dir/src +# set repo_dir $origin_dir/repo +# set part_num "xc7a200tsbg484-1" +# create_project $proj_name $dest_dir +INFO: [IP_Flow 19-234] Refreshing IP repositories +INFO: [IP_Flow 19-1704] No user IP repositories specified +INFO: [IP_Flow 19-2313] Loaded Vivado IP repository '/usr/home/enstb1/MEE/Xilinx/vivado2024.1/Vivado/2024.1/data/ip'. +create_project: Time (s): cpu = 00:00:10 ; elapsed = 00:00:09 . Memory (MB): peak = 8079.234 ; gain = 197.969 ; free physical = 7226 ; free virtual = 15602 +# set proj_dir [get_property directory [current_project]] +# set obj [get_projects $proj_name] +# set_property "default_lib" "xil_defaultlib" $obj +# set_property "part" "$part_num" $obj +# set_property "simulator_language" "Mixed" $obj +# set_property "target_language" "VHDL" $obj +# if {[string equal [get_filesets -quiet sources_1] ""]} { +# create_fileset -srcset sources_1 +# } +# if {[string equal [get_filesets -quiet constrs_1] ""]} { +# create_fileset -constrset constrs_1 +# } +# set obj [get_filesets sources_1] +# set_property "ip_repo_paths" "[file normalize $repo_dir]" $obj +# add_files -quiet $src_dir/hdl +# add_files -quiet [glob -nocomplain ../src/ip/*/*.xci] +# add_files -fileset constrs_1 -quiet $src_dir/constraints +# if {[string equal [get_runs -quiet synth_1] ""]} { +# create_run -name synth_1 -part $part_num -flow {Vivado Synthesis 2014} -strategy "Flow_PerfOptimized_High" -constrset constrs_1 +# } else { +# set_property strategy "Flow_PerfOptimized_High" [get_runs synth_1] +# set_property flow "Vivado Synthesis 2014" [get_runs synth_1] +# } +# set obj [get_runs synth_1] +# set_property "part" "$part_num" $obj +# set_property "steps.synth_design.args.fanout_limit" "400" $obj +# set_property "steps.synth_design.args.fsm_extraction" "one_hot" $obj +# set_property "steps.synth_design.args.keep_equivalent_registers" "1" $obj +# set_property "steps.synth_design.args.resource_sharing" "off" $obj +# set_property "steps.synth_design.args.no_lc" "1" $obj +# set_property "steps.synth_design.args.shreg_min_size" "5" $obj +# current_run -synthesis [get_runs synth_1] +# if {[string equal [get_runs -quiet impl_1] ""]} { +# create_run -name impl_1 -part $part_num -flow {Vivado Implementation 2014} -strategy "Vivado Implementation Defaults" -constrset constrs_1 -parent_run synth_1 +# } else { +# set_property strategy "Vivado Implementation Defaults" [get_runs impl_1] +# set_property flow "Vivado Implementation 2014" [get_runs impl_1] +# } +# set obj [get_runs impl_1] +# set_property "part" "$part_num" $obj +# set_property "steps.write_bitstream.args.bin_file" "1" $obj +# current_run -implementation [get_runs impl_1] +impl_1 +exit +INFO: [Common 17-206] Exiting Vivado at Wed Feb 26 09:59:12 2025... -- GitLab