Browse Source

update

master
zhaohe 2 years ago
parent
commit
784e5a0902
  1. 2
      ipcore/inclkpll/.last_generated
  2. 17
      ipcore/inclkpll/generate.log
  3. 651
      ipcore/inclkpll/inclkpll.idf
  4. 295
      ipcore/inclkpll/inclkpll.v
  5. 252
      ipcore/inclkpll/inclkpll_tb.v
  6. 13
      ipcore/inclkpll/inclkpll_tmpl.v
  7. 23
      ipcore/inclkpll/inclkpll_tmpl.vhdl
  8. 178
      led_test.fdc
  9. 128
      led_test.pds
  10. 18
      source/src/monitor_line.v
  11. 36
      source/src/top.v

2
ipcore/inclkpll/.last_generated

@ -0,0 +1,2 @@
2023-12-14 21:34
rev_1

17
ipcore/inclkpll/generate.log

@ -0,0 +1,17 @@
IP Generator (Version 2021.1-SP7 build 86875)
Check out license ...
Start generating at 2023-12-14 21:34
Instance: inclkpll (D:\workspace\fpga_demo\led_test\ipcore\inclkpll\inclkpll.idf)
IP: PLL (1.5)
Part: Logos-PGL22G-MBG324--6
Create directory 'rtl' ...
Copy 'ipml_pll_wrapper_v1_4.v.xml' ...
Compile file 'ipml_pll_wrapper_v1_4.v.xml' to 'inclkpll.v' ...
Found top module 'inclkpll' in file 'inclkpll.v'.
Copy 'ipml_pll_wrapper_v1_4_tb.v.xml' ...
Compile file 'ipml_pll_wrapper_v1_4_tb.v.xml' to 'inclkpll_tb.v' ...
Create template file 'inclkpll_tmpl.v' ...
Create template file 'inclkpll_tmpl.vhdl' ...
There is 1 source file to synthesize.
Synthesis is disabled.
Done: 0 error(s), 0 warning(s)

651
ipcore/inclkpll/inclkpll.idf

@ -0,0 +1,651 @@
<?xml version="1.0" encoding="UTF-8"?>
<ip_inst>
<header>
<vendor>Pango</vendor>
<id>021001</id>
<display_name>PLL</display_name>
<name>Logos PLL</name>
<version>1.5</version>
<instance>inclkpll</instance>
<family>Logos</family>
<device>PGL22G</device>
<package>MBG324</package>
<speedgrade>-6</speedgrade>
<generator version="2021.1-SP7" build="86875">IP Compiler</generator>
</header>
<param_list>
<param>
<name>STATIC_PHASE1_basicPage</name>
<value>16</value>
</param>
<param>
<name>BANDWIDTH_basicPage</name>
<value>OPTIMIZED</value>
</param>
<param>
<name>FBDIV_SEL_advancedPage</name>
<value>0</value>
</param>
<param>
<name>CLKOUT4_GATE_EN_advancedPage</name>
<value>false</value>
</param>
<param>
<name>DYNAMIC_DUTY1_EN_advancedPage</name>
<value>false</value>
</param>
<param>
<name>DYNAMIC_RATIOF_EN_advancedPage</name>
<value>false</value>
</param>
<param>
<name>STATIC_DUTY2_advancedPage</name>
<value>16</value>
</param>
<param>
<name>STATIC_PHASE2_advancedPage</name>
<value>16</value>
</param>
<param>
<name>DYNAMIC_LOOP_EN_advancedPage</name>
<value>false</value>
</param>
<param>
<name>CLKOUT2_REQ_PHASE_basicPage</name>
<value>0.0000</value>
<decimal>4</decimal>
</param>
<param>
<name>CLK_CAS1_EN_basicPage</name>
<value>false</value>
</param>
<param>
<name>CLKOUT1_REQ_DUTY_basicPage</name>
<value>50.0000</value>
<decimal>4</decimal>
</param>
<param>
<name>CLKOUT1_REQ_FREQ_basicPage</name>
<value>50.0000</value>
<decimal>4</decimal>
</param>
<param>
<name>CLKOUT2_GATE_EN_basicPage</name>
<value>false</value>
</param>
<param>
<name>MODE</name>
<value>false</value>
</param>
<param>
<name>DYNAMIC_DUTY3_EN_advancedPage</name>
<value>false</value>
</param>
<param>
<name>CLKOUT1_GATE_EN_advancedPage</name>
<value>false</value>
</param>
<param>
<name>CLKOUT4_GATE_EN_basicPage</name>
<value>false</value>
</param>
<param>
<name>STATIC_RATIO2_advancedPage</name>
<value>16</value>
</param>
<param>
<name>STATIC_RATIO1_basicPage</name>
<value>12</value>
</param>
<param>
<name>PLL_PWD_ENABLE_basicPage</name>
<value>false</value>
</param>
<param>
<name>DEVICE_PGL12</name>
<value>false</value>
</param>
<param>
<name>CLKOUT0_EN_advancedPage</name>
<value>true</value>
</param>
<param>
<name>CLKOUT3_REQ_PHASE_basicPage</name>
<value>0.0000</value>
<decimal>4</decimal>
</param>
<param>
<name>PLL_PWD_ENABLE_advancedPage</name>
<value>false</value>
</param>
<param>
<name>RST_ENABLE_basicPage</name>
<value>false</value>
</param>
<param>
<name>DYNAMIC_CLKIN_EN_basicPage</name>
<value>false</value>
</param>
<param>
<name>STATIC_PHASE4_basicPage</name>
<value>16</value>
</param>
<param>
<name>CLKOUT1_EN_advancedPage</name>
<value>false</value>
</param>
<param>
<name>DYNAMIC_RATIO3_EN_advancedPage</name>
<value>false</value>
</param>
<param>
<name>DYNAMIC_RATIOM_EN_advancedPage</name>
<value>false</value>
</param>
<param>
<name>CLKOUT1_GATE_EN_basicPage</name>
<value>false</value>
</param>
<param>
<name>STATIC_PHASE0_advancedPage</name>
<value>16</value>
</param>
<param>
<name>FEEDBACK_DELAY_ENABLE_advancedPage</name>
<value>false</value>
</param>
<param>
<name>STATIC_DUTY0_basicPage</name>
<value>120</value>
</param>
<param>
<name>CLKIN_SEL_EN_ENABLE_basicPage</name>
<value>false</value>
</param>
<param>
<name>FBDIV_SEL_basicPage</name>
<value>0</value>
</param>
<param>
<name>CLKOUT2_EN_basicPage</name>
<value>false</value>
</param>
<param>
<name>FBMODE_advancedPage</name>
<value>false</value>
</param>
<param>
<name>BANDWIDTH_advancedPage</name>
<value>OPTIMIZED</value>
</param>
<param>
<name>STATIC_DUTY0_advancedPage</name>
<value>16</value>
</param>
<param>
<name>STATIC_DUTY3_basicPage</name>
<value>16</value>
</param>
<param>
<name>CLKOUT4_REQ_PHASE_basicPage</name>
<value>0.0000</value>
<decimal>4</decimal>
</param>
<param>
<name>DYNAMIC_PHASE3_EN_advancedPage</name>
<value>false</value>
</param>
<param>
<name>CLKOUT0_REQ_FREQ_basicPage</name>
<value>5.0000</value>
<decimal>4</decimal>
</param>
<param>
<name>CLKIN_FREQ_advancedPage</name>
<value>50.0000</value>
<decimal>4</decimal>
</param>
<param>
<name>DYNAMIC_PHASE4_EN_advancedPage</name>
<value>false</value>
</param>
<param>
<name>STATIC_PHASE4_advancedPage</name>
<value>16</value>
</param>
<param>
<name>STATIC_RATIO1_advancedPage</name>
<value>16</value>
</param>
<param>
<name>STATIC_RATIO2_basicPage</name>
<value>16</value>
</param>
<param>
<name>DYNAMIC_PHASE0_EN_advancedPage</name>
<value>false</value>
</param>
<param>
<name>CLK_CAS4_EN_basicPage</name>
<value>false</value>
</param>
<param>
<name>STATIC_RATIO0_basicPage</name>
<value>120</value>
</param>
<param>
<name>CLKOUT0_EXT_EN_basicPage</name>
<value>false</value>
</param>
<param>
<name>DYNAMIC_PHASE1_EN_advancedPage</name>
<value>false</value>
</param>
<param>
<name>STATIC_PHASE2_basicPage</name>
<value>16</value>
</param>
<param>
<name>FEEDBACK_DELAY_VALUE_basicPage</name>
<value>0.000</value>
<decimal>3</decimal>
</param>
<param>
<name>DYNAMIC_RATIO1_EN_advancedPage</name>
<value>false</value>
</param>
<param>
<name>CLKOUT2_GATE_EN_advancedPage</name>
<value>false</value>
</param>
<param>
<name>CLKOUT3_EN_basicPage</name>
<value>false</value>
</param>
<param>
<name>CLK_CAS1_EN_advancedPage</name>
<value>false</value>
</param>
<param>
<name>CLKSWITCH_FLAG_ENABLE_basicPage</name>
<value>false</value>
</param>
<param>
<name>STATIC_RATIOF_basicPage</name>
<value>24</value>
</param>
<param>
<name>STATIC_PHASE0_basicPage</name>
<value>16</value>
</param>
<param>
<name>CLKOUT2_REQ_DUTY_basicPage</name>
<value>50.0000</value>
<decimal>4</decimal>
</param>
<param>
<name>CLKOUT4_REQ_DUTY_basicPage</name>
<value>50.0000</value>
<decimal>4</decimal>
</param>
<param>
<name>CLKIN_SEL_EN_ENABLE_advancedPage</name>
<value>false</value>
</param>
<param>
<name>DYNAMIC_RATIO0_EN_advancedPage</name>
<value>false</value>
</param>
<param>
<name>CLKOUT0_EXT_EN_advancedPage</name>
<value>false</value>
</param>
<param>
<name>CLKOUT5_EN_advancedPage</name>
<value>false</value>
</param>
<param>
<name>DEVICE_PGL35</name>
<value>false</value>
</param>
<param>
<name>STATIC_DUTY2_basicPage</name>
<value>16</value>
</param>
<param>
<name>CLKOUT3_EN_advancedPage</name>
<value>false</value>
</param>
<param>
<name>CLKIN_BYPASS_EN_advancedPage</name>
<value>false</value>
</param>
<param>
<name>CLKOUT0_EXT_GATE_EN_basicPage</name>
<value>false</value>
</param>
<param>
<name>CLKOUT0_EXT_GATE_EN_advancedPage</name>
<value>false</value>
</param>
<param>
<name>STATIC_RATIOI_basicPage</name>
<value>2</value>
</param>
<param>
<name>CLKSWITCH_FLAG_ENABLE_advancedPage</name>
<value>false</value>
</param>
<param>
<name>CLKOUT4_EN_basicPage</name>
<value>false</value>
</param>
<param>
<name>CLKOUT4_EN_advancedPage</name>
<value>false</value>
</param>
<param>
<name>CLKOUT3_REQ_DUTY_basicPage</name>
<value>50.0000</value>
<decimal>4</decimal>
</param>
<param>
<name>STATIC_DUTY1_basicPage</name>
<value>12</value>
</param>
<param>
<name>CLKOUT0_REQ_PHASE_basicPage</name>
<value>0.0000</value>
<decimal>4</decimal>
</param>
<param>
<name>RST_ENABLE_advancedPage</name>
<value>true</value>
</param>
<param>
<name>DYNAMIC_DUTY0_EN_advancedPage</name>
<value>false</value>
</param>
<param>
<name>STATIC_RATIOM_basicPage</name>
<value>1</value>
</param>
<param>
<name>CLK_CAS3_EN_basicPage</name>
<value>false</value>
</param>
<param>
<name>STATIC_DUTY4_basicPage</name>
<value>16</value>
</param>
<param>
<name>CLKIN_SEL_ENABLE_advancedPage</name>
<value>false</value>
</param>
<param>
<name>DYNAMIC_DUTY4_EN_advancedPage</name>
<value>false</value>
</param>
<param>
<name>DYNAMIC_RATIO2_EN_advancedPage</name>
<value>false</value>
</param>
<param>
<name>STATIC_RATIO3_basicPage</name>
<value>16</value>
</param>
<param>
<name>CLK_CAS2_EN_basicPage</name>
<value>false</value>
</param>
<param>
<name>CLKOUT3_REQ_FREQ_basicPage</name>
<value>50.0000</value>
<decimal>4</decimal>
</param>
<param>
<name>DYNAMIC_RATIO4_EN_advancedPage</name>
<value>false</value>
</param>
<param>
<name>STATIC_RATIO4_advancedPage</name>
<value>16</value>
</param>
<param>
<name>CLKOUT3_GATE_EN_advancedPage</name>
<value>false</value>
</param>
<param>
<name>CLKOUT5_GATE_EN_advancedPage</name>
<value>false</value>
</param>
<param>
<name>CLKOUT4_REQ_FREQ_basicPage</name>
<value>50.0000</value>
<decimal>4</decimal>
</param>
<param>
<name>STATIC_RATIO0_advancedPage</name>
<value>16</value>
</param>
<param>
<name>CLKOUT0_REQ_DUTY_basicPage</name>
<value>50.0000</value>
<decimal>4</decimal>
</param>
<param>
<name>CLKOUT0_EN_basicPage</name>
<value>true</value>
</param>
<param>
<name>CLKOUT5_SEL_advancedPage</name>
<value>0</value>
</param>
<param>
<name>VCODIV2_ENABLE_advancedPage</name>
<value>false</value>
</param>
<param>
<name>CLKIN_BYPASS_EN_basicPage</name>
<value>false</value>
</param>
<param>
<name>CLKOUT3_GATE_EN_basicPage</name>
<value>false</value>
</param>
<param>
<name>STATIC_PHASE3_basicPage</name>
<value>16</value>
</param>
<param>
<name>CLKOUT1_REQ_PHASE_basicPage</name>
<value>0.0000</value>
<decimal>4</decimal>
</param>
<param>
<name>STATIC_RATIOF_advancedPage</name>
<value>16</value>
</param>
<param>
<name>CLKOUT1_EN_basicPage</name>
<value>false</value>
</param>
<param>
<name>CLKOUT0_GATE_EN_advancedPage</name>
<value>false</value>
</param>
<param>
<name>STATIC_DUTYF_basicPage</name>
<value>24</value>
</param>
<param>
<name>STATIC_PHASE3_advancedPage</name>
<value>16</value>
</param>
<param>
<name>CLKOUT0_GATE_EN_basicPage</name>
<value>false</value>
</param>
<param>
<name>STATIC_RATIOM_advancedPage</name>
<value>1</value>
</param>
<param>
<name>CLKIN_FREQ_basicPage</name>
<value>50.0000</value>
<decimal>4</decimal>
</param>
<param>
<name>PFDEN_EN_advancedPage</name>
<value>false</value>
</param>
<param>
<name>CLKIN_SEL_ENABLE_basicPage</name>
<value>false</value>
</param>
<param>
<name>STATIC_RATIOI_advancedPage</name>
<value>2</value>
</param>
<param>
<name>FBMODE_basicPage</name>
<value>false</value>
</param>
<param>
<name>STATIC_PHASE1_advancedPage</name>
<value>16</value>
</param>
<param>
<name>DYNAMIC_PHASE2_EN_advancedPage</name>
<value>false</value>
</param>
<param>
<name>DEVICE_PGL22</name>
<value>true</value>
</param>
<param>
<name>STATIC_DUTY3_advancedPage</name>
<value>16</value>
</param>
<param>
<name>LOOP_MAPPING_EN_advancedPage</name>
<value>false</value>
</param>
<param>
<name>SHOW_SETTING_EN_basicPage</name>
<value>false</value>
</param>
<param>
<name>CLK_CAS2_EN_advancedPage</name>
<value>false</value>
</param>
<param>
<name>STATIC_DUTY4_advancedPage</name>
<value>16</value>
</param>
<param>
<name>CLKOUT2_REQ_FREQ_basicPage</name>
<value>50.0000</value>
<decimal>4</decimal>
</param>
<param>
<name>MODE_CFG</name>
<value>0</value>
</param>
<param>
<name>RSTODIV_ENABLE_advancedPage</name>
<value>true</value>
</param>
<param>
<name>CLKOUT2_EN_advancedPage</name>
<value>false</value>
</param>
<param>
<name>CLK_CAS4_EN_advancedPage</name>
<value>false</value>
</param>
<param>
<name>STATIC_RATIO4_basicPage</name>
<value>16</value>
</param>
<param>
<name>FEEDBACK_DELAY_VALUE_advancedPage</name>
<value>0.000</value>
<decimal>3</decimal>
</param>
<param>
<name>FB_MODE_basicPage</name>
<value>0</value>
</param>
<param>
<name>STATIC_DUTY1_advancedPage</name>
<value>16</value>
</param>
<param>
<name>FB_MODE_advancedPage</name>
<value>0</value>
</param>
<param>
<name>DYNAMIC_RATIOI_EN_advancedPage</name>
<value>false</value>
</param>
<param>
<name>CLK_CAS3_EN_advancedPage</name>
<value>false</value>
</param>
<param>
<name>DYNAMIC_PHASE_EN_advancedPage</name>
<value>false</value>
</param>
<param>
<name>DYNAMIC_DUTY2_EN_advancedPage</name>
<value>false</value>
</param>
<param>
<name>STATIC_RATIO3_advancedPage</name>
<value>16</value>
</param>
<param>
<name>FEEDBACK_DELAY_ENABLE_basicPage</name>
<value>false</value>
</param>
<param>
<name>DYNAMIC_CLKIN_EN_advancedPage</name>
<value>false</value>
</param>
</param_list>
<pin_list>
<pin>
<name>clkin1</name>
<text>clkin1</text>
<dir>input</dir>
<pos>left</pos>
</pin>
<pin>
<name>pll_lock</name>
<text>pll_lock</text>
<dir>output</dir>
<pos>right</pos>
</pin>
<pin>
<name>clkout0</name>
<text>clkout0</text>
<dir>output</dir>
<pos>right</pos>
</pin>
</pin_list>
<synthesis>
<script><![CDATA[set_option -vlog_std v2001]]></script>
<script><![CDATA[set_option -disable_io_insertion 1]]></script>
</synthesis>
<file_list>
<output>
<file pathname="generate.log" format="log" description="Generate Log"/>
<file pathname="inclkpll_tmpl.v" format="verilog" description="Instantiation Template"/>
<file pathname="inclkpll_tmpl.vhdl" format="vhdl" description="Instantiation Template"/>
</output>
<source>
<file pathname="inclkpll.v"/>
</source>
</file_list>
</ip_inst>

295
ipcore/inclkpll/inclkpll.v

@ -0,0 +1,295 @@
// Created by IP Generator (Version 2021.1-SP7 build 86875)
//////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2019 PANGO MICROSYSTEMS, INC
// ALL RIGHTS REVERVED.
//
// THE SOURCE CODE CONTAINED HEREIN IS PROPRIETARY TO PANGO MICROSYSTEMS, INC.
// IT SHALL NOT BE REPRODUCED OR DISCLOSED IN WHOLE OR IN PART OR USED BY
// PARTIES WITHOUT WRITTEN AUTHORIZATION FROM THE OWNER.
//
//////////////////////////////////////////////////////////////////////////////
//
// Library:
// Filename:inclkpll.v
//////////////////////////////////////////////////////////////////////////////
module inclkpll (
clkin1,
clkout0,
pll_lock
);
localparam real CLKIN_FREQ = 50.0;
localparam integer STATIC_RATIOI = 2;
localparam integer STATIC_RATIO0 = 120;
localparam integer STATIC_RATIO1 = 12;
localparam integer STATIC_RATIO2 = 16;
localparam integer STATIC_RATIO3 = 16;
localparam integer STATIC_RATIO4 = 16;
localparam integer STATIC_RATIOF = 24;
localparam integer STATIC_DUTY0 = 120;
localparam integer STATIC_DUTY1 = 12;
localparam integer STATIC_DUTY2 = 16;
localparam integer STATIC_DUTY3 = 16;
localparam integer STATIC_DUTY4 = 16;
localparam integer STATIC_DUTYF = 24;
localparam integer STATIC_PHASE0 = 16;
localparam integer STATIC_PHASE1 = 16;
localparam integer STATIC_PHASE2 = 16;
localparam integer STATIC_PHASE3 = 16;
localparam integer STATIC_PHASE4 = 16;
localparam CLK_CAS1_EN = "FALSE";
localparam CLK_CAS2_EN = "FALSE";
localparam CLK_CAS3_EN = "FALSE";
localparam CLK_CAS4_EN = "FALSE";
localparam CLKIN_BYPASS_EN = "FALSE";
localparam CLKOUT0_GATE_EN = "FALSE";
localparam CLKOUT0_EXT_GATE_EN = "FALSE";
localparam CLKOUT1_GATE_EN = "FALSE";
localparam CLKOUT2_GATE_EN = "FALSE";
localparam CLKOUT3_GATE_EN = "FALSE";
localparam CLKOUT4_GATE_EN = "FALSE";
localparam FBMODE = "FALSE";
localparam integer FBDIV_SEL = 0;
localparam BANDWIDTH = "OPTIMIZED";
localparam PFDEN_EN = "FALSE";
localparam VCOCLK_DIV2 = 1'b0;
localparam DYNAMIC_RATIOI_EN = "FALSE";
localparam DYNAMIC_RATIO0_EN = "FALSE";
localparam DYNAMIC_RATIO1_EN = "FALSE";
localparam DYNAMIC_RATIO2_EN = "FALSE";
localparam DYNAMIC_RATIO3_EN = "FALSE";
localparam DYNAMIC_RATIO4_EN = "FALSE";
localparam DYNAMIC_RATIOF_EN = "FALSE";
localparam DYNAMIC_DUTY0_EN = "FALSE";
localparam DYNAMIC_DUTY1_EN = "FALSE";
localparam DYNAMIC_DUTY2_EN = "FALSE";
localparam DYNAMIC_DUTY3_EN = "FALSE";
localparam DYNAMIC_DUTY4_EN = "FALSE";
localparam DYNAMIC_DUTYF_EN = "FALSE";
localparam PHASE_ADJUST0_EN = "TRUE";
localparam PHASE_ADJUST1_EN = (CLK_CAS1_EN == "TRUE") ? "FALSE" : "TRUE";
localparam PHASE_ADJUST2_EN = (CLK_CAS2_EN == "TRUE") ? "FALSE" : "TRUE";
localparam PHASE_ADJUST3_EN = (CLK_CAS3_EN == "TRUE") ? "FALSE" : "TRUE";
localparam PHASE_ADJUST4_EN = (CLK_CAS4_EN == "TRUE") ? "FALSE" : "TRUE";
localparam DYNAMIC_PHASE0_EN = "FALSE";
localparam DYNAMIC_PHASE1_EN = "FALSE";
localparam DYNAMIC_PHASE2_EN = "FALSE";
localparam DYNAMIC_PHASE3_EN = "FALSE";
localparam DYNAMIC_PHASE4_EN = "FALSE";
localparam DYNAMIC_PHASEF_EN = "FALSE";
localparam integer STATIC_PHASEF = 16;
localparam CLK_CAS0_EN = "FALSE";
localparam integer CLKOUT5_SEL = 0;
localparam CLKOUT5_GATE_EN = "FALSE";
localparam INTERNAL_FB = (FBMODE == "FALSE") ? "ENABLE":"DISABLE";
localparam EXTERNAL_FB = (FBMODE == "FALSE") ? "DISABLE":
(FBDIV_SEL == 0) ? "CLKOUT0":
(FBDIV_SEL == 1) ? "CLKOUT1":
(FBDIV_SEL == 2) ? "CLKOUT2":
(FBDIV_SEL == 3) ? "CLKOUT3":
(FBDIV_SEL == 4) ? "CLKOUT4":"DISABLE";
localparam RSTODIV_ENABLE = "FALSE";
localparam SIM_DEVICE = "PGL22G";
input clkin1;
output clkout0;
output pll_lock;
wire clkout0;
wire clkout0_2pad;
wire clkout1;
wire clkout2;
wire clkout3;
wire clkout4;
wire clkout5;
wire clkswitch_flag;
wire pll_lock;
wire clkin1;
wire clkin2;
wire clkfb;
wire clkin_sel;
wire clkin_sel_en;
wire pfden;
wire clkout0_gate;
wire clkout0_2pad_gate;
wire clkout1_gate;
wire clkout2_gate;
wire clkout3_gate;
wire clkout4_gate;
wire clkout5_gate;
wire [9:0] dyn_idiv;
wire [9:0] dyn_odiv0;
wire [9:0] dyn_odiv1;
wire [9:0] dyn_odiv2;
wire [9:0] dyn_odiv3;
wire [9:0] dyn_odiv4;
wire [9:0] dyn_fdiv;
wire [9:0] dyn_duty0;
wire [9:0] dyn_duty1;
wire [9:0] dyn_duty2;
wire [9:0] dyn_duty3;
wire [9:0] dyn_duty4;
wire [12:0] dyn_phase0;
wire [12:0] dyn_phase1;
wire [12:0] dyn_phase2;
wire [12:0] dyn_phase3;
wire [12:0] dyn_phase4;
wire pll_pwd;
wire pll_rst;
wire rstodiv;
wire icp_base;
wire [3:0] icp_sel;
wire [2:0] lpfres_sel;
wire cripple_sel;
wire [2:0] phase_sel;
wire phase_dir;
wire phase_step_n;
wire load_phase;
wire [6:0] dyn_mdiv;
assign clkin2 = 1'b0;
assign clkin_sel = 1'b0;
assign clkin_sel_en = 1'b0;
assign pll_pwd = 1'b0;
assign pll_rst = 1'b0;
assign rstodiv = 1'b0;
GTP_PLL_E1 #(
.CLKIN_FREQ(CLKIN_FREQ),
.PFDEN_EN(PFDEN_EN),
.VCOCLK_DIV2(VCOCLK_DIV2),
.DYNAMIC_RATIOI_EN(DYNAMIC_RATIOI_EN),
.DYNAMIC_RATIO0_EN(DYNAMIC_RATIO0_EN),
.DYNAMIC_RATIO1_EN(DYNAMIC_RATIO1_EN),
.DYNAMIC_RATIO2_EN(DYNAMIC_RATIO2_EN),
.DYNAMIC_RATIO3_EN(DYNAMIC_RATIO3_EN),
.DYNAMIC_RATIO4_EN(DYNAMIC_RATIO4_EN),
.DYNAMIC_RATIOF_EN(DYNAMIC_RATIOF_EN),
.STATIC_RATIOI(STATIC_RATIOI),
.STATIC_RATIO0(STATIC_RATIO0),
.STATIC_RATIO1(STATIC_RATIO1),
.STATIC_RATIO2(STATIC_RATIO2),
.STATIC_RATIO3(STATIC_RATIO3),
.STATIC_RATIO4(STATIC_RATIO4),
.STATIC_RATIOF(STATIC_RATIOF),
.DYNAMIC_DUTY0_EN(DYNAMIC_DUTY0_EN),
.DYNAMIC_DUTY1_EN(DYNAMIC_DUTY1_EN),
.DYNAMIC_DUTY2_EN(DYNAMIC_DUTY2_EN),
.DYNAMIC_DUTY3_EN(DYNAMIC_DUTY3_EN),
.DYNAMIC_DUTY4_EN(DYNAMIC_DUTY4_EN),
.DYNAMIC_DUTYF_EN(DYNAMIC_DUTYF_EN),
.STATIC_DUTY0(STATIC_DUTY0),
.STATIC_DUTY1(STATIC_DUTY1),
.STATIC_DUTY2(STATIC_DUTY2),
.STATIC_DUTY3(STATIC_DUTY3),
.STATIC_DUTY4(STATIC_DUTY4),
.STATIC_DUTYF(STATIC_DUTYF),
.PHASE_ADJUST0_EN(PHASE_ADJUST0_EN),
.PHASE_ADJUST1_EN(PHASE_ADJUST1_EN),
.PHASE_ADJUST2_EN(PHASE_ADJUST2_EN),
.PHASE_ADJUST3_EN(PHASE_ADJUST3_EN),
.PHASE_ADJUST4_EN(PHASE_ADJUST4_EN),
.DYNAMIC_PHASE0_EN(DYNAMIC_PHASE0_EN),
.DYNAMIC_PHASE1_EN(DYNAMIC_PHASE1_EN),
.DYNAMIC_PHASE2_EN(DYNAMIC_PHASE2_EN),
.DYNAMIC_PHASE3_EN(DYNAMIC_PHASE3_EN),
.DYNAMIC_PHASE4_EN(DYNAMIC_PHASE4_EN),
.DYNAMIC_PHASEF_EN(DYNAMIC_PHASEF_EN),
.STATIC_PHASE0(STATIC_PHASE0[2:0]),
.STATIC_PHASE1(STATIC_PHASE1[2:0]),
.STATIC_PHASE2(STATIC_PHASE2[2:0]),
.STATIC_PHASE3(STATIC_PHASE3[2:0]),
.STATIC_PHASE4(STATIC_PHASE4[2:0]),
.STATIC_PHASEF(STATIC_PHASEF[2:0]),
.STATIC_CPHASE0(STATIC_PHASE0[12:3]),
.STATIC_CPHASE1(STATIC_PHASE1[12:3]),
.STATIC_CPHASE2(STATIC_PHASE2[12:3]),
.STATIC_CPHASE3(STATIC_PHASE3[12:3]),
.STATIC_CPHASE4(STATIC_PHASE4[12:3]),
.STATIC_CPHASEF(STATIC_PHASEF[12:3]),
.CLK_CAS0_EN(CLK_CAS0_EN),
.CLK_CAS1_EN(CLK_CAS1_EN),
.CLK_CAS2_EN(CLK_CAS2_EN),
.CLK_CAS3_EN(CLK_CAS3_EN),
.CLK_CAS4_EN(CLK_CAS4_EN),
.CLKOUT5_SEL(CLKOUT5_SEL),
.CLKIN_BYPASS_EN(CLKIN_BYPASS_EN),
.CLKOUT0_SYN_EN(CLKOUT0_GATE_EN),
.CLKOUT0_EXT_SYN_EN(CLKOUT0_EXT_GATE_EN),
.CLKOUT1_SYN_EN(CLKOUT1_GATE_EN),
.CLKOUT2_SYN_EN(CLKOUT2_GATE_EN),
.CLKOUT3_SYN_EN(CLKOUT3_GATE_EN),
.CLKOUT4_SYN_EN(CLKOUT4_GATE_EN),
.CLKOUT5_SYN_EN(CLKOUT5_GATE_EN),
.INTERNAL_FB(INTERNAL_FB),
.EXTERNAL_FB(EXTERNAL_FB),
.RSTODIV_PHASE_EN(RSTODIV_ENABLE),
.SIM_DEVICE(SIM_DEVICE),
.BANDWIDTH(BANDWIDTH)
) u_pll_e1 (
.CLKOUT0(clkout0),
.CLKOUT0_EXT(clkout0_2pad),
.CLKOUT1(clkout1),
.CLKOUT2(clkout2),
.CLKOUT3(clkout3),
.CLKOUT4(clkout4),
.CLKOUT5(clkout5),
.CLKSWITCH_FLAG(clkswitch_flag),
.LOCK(pll_lock),
.CLKIN1(clkin1),
.CLKIN2(clkin2),
.CLKFB(clkfb),
.CLKIN_SEL(clkin_sel),
.CLKIN_SEL_EN(clkin_sel_en),
.PFDEN(pfden),
.RATIOI(dyn_idiv),
.RATIO0(dyn_odiv0),
.RATIO1(dyn_odiv1),
.RATIO2(dyn_odiv2),
.RATIO3(dyn_odiv3),
.RATIO4(dyn_odiv4),
.RATIOF(dyn_fdiv),
.DUTY0(dyn_duty0),
.DUTY1(dyn_duty1),
.DUTY2(dyn_duty2),
.DUTY3(dyn_duty3),
.DUTY4(dyn_duty4),
.DUTYF(),
.PHASE0(dyn_phase0[2:0]),
.PHASE1(dyn_phase1[2:0]),
.PHASE2(dyn_phase2[2:0]),
.PHASE3(dyn_phase3[2:0]),
.PHASE4(dyn_phase4[2:0]),
.PHASEF(),
.CPHASE0(dyn_phase0[12:3]),
.CPHASE1(dyn_phase1[12:3]),
.CPHASE2(dyn_phase2[12:3]),
.CPHASE3(dyn_phase3[12:3]),
.CPHASE4(dyn_phase4[12:3]),
.CPHASEF(),
.CLKOUT0_SYN(clkout0_gate),
.CLKOUT0_EXT_SYN(clkout0_2pad_gate),
.CLKOUT1_SYN(clkout1_gate),
.CLKOUT2_SYN(clkout2_gate),
.CLKOUT3_SYN(clkout3_gate),
.CLKOUT4_SYN(clkout4_gate),
.CLKOUT5_SYN(clkout5_gate),
.PLL_PWD(pll_pwd),
.RST(pll_rst),
.RSTODIV_PHASE(rstodiv)
);
endmodule

252
ipcore/inclkpll/inclkpll_tb.v

@ -0,0 +1,252 @@
// Created by IP Generator (Version 2021.1-SP7 build 86875)
//////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2019 PANGO MICROSYSTEMS, INC
// ALL RIGHTS REVERVED.
//
// THE SOURCE CODE CONTAINED HEREIN IS PROPRIETARY TO PANGO MICROSYSTEMS, INC.
// IT SHALL NOT BE REPRODUCED OR DISCLOSED IN WHOLE OR IN PART OR USED BY
// PARTIES WITHOUT WRITTEN AUTHORIZATION FROM THE OWNER.
//
//////////////////////////////////////////////////////////////////////////////
//
// Library:
// Filename:inclkpll.v
//////////////////////////////////////////////////////////////////////////////
`timescale 1 ns/1 ps
module inclkpll_tb ();
localparam CLKIN_FREQ = 50.0;
localparam integer FBDIV_SEL = 0;
localparam FBMODE = "FALSE";
// Generate testbench reset and clock
reg pll_rst;
reg rstodiv;
reg pll_pwd;
reg clkin1;
reg clkin2;
reg clkin_dsel;
reg clkin_dsel_en;
reg pfden;
reg clkout0_gate;
reg clkout0_2pad_gate;
reg clkout1_gate;
reg clkout2_gate;
reg clkout3_gate;
reg clkout4_gate;
reg clkout5_gate;
reg [9:0] dyn_idiv;
reg [9:0] dyn_odiv0;
reg [9:0] dyn_odiv1;
reg [9:0] dyn_odiv2;
reg [9:0] dyn_odiv3;
reg [9:0] dyn_odiv4;
reg [9:0] dyn_fdiv;
reg [9:0] dyn_duty0;
reg [9:0] dyn_duty1;
reg [9:0] dyn_duty2;
reg [9:0] dyn_duty3;
reg [9:0] dyn_duty4;
reg [12:0] dyn_phase0;
reg [12:0] dyn_phase1;
reg [12:0] dyn_phase2;
reg [12:0] dyn_phase3;
reg [12:0] dyn_phase4;
reg err_chk;
reg [2:0] results_cnt;
reg rst_n;
reg clk_tb;
wire clkout0;
wire clkout1;
wire clkout2;
wire clkout3;
wire clkout4;
wire clkfb = (FBMODE == "FALSE") ? clkin1 :
(FBDIV_SEL == 0 ) ? clkout0 :
(FBDIV_SEL == 1 ) ? clkout1 :
(FBDIV_SEL == 2 ) ? clkout2 :
(FBDIV_SEL == 3 ) ? clkout3 :
(FBDIV_SEL == 4 ) ? clkout4 : clkin1;
initial
begin
rst_n = 0;
#20
rst_n = 1;
end
initial
begin
clk_tb = 0;
forever #1 clk_tb = ~clk_tb;
end
parameter CLOCK_PERIOD1 = (500.0/CLKIN_FREQ);
//parameter CLOCK_PERIOD2 = (500.0/CLKIN_FREQ);
initial
begin
clkin1 = 0;
forever #(CLOCK_PERIOD1) clkin1 = ~clkin1;
end
initial
begin
pll_pwd = 0;
pll_rst = 0;
rstodiv = 0;
clkin_dsel = 0;
clkin_dsel_en = 0;
pfden = 0;
clkout0_gate = 0;
clkout0_2pad_gate = 0;
clkout1_gate = 0;
clkout2_gate = 0;
clkout3_gate = 0;
clkout4_gate = 0;
clkout5_gate = 0;
dyn_idiv = 10'd2;
dyn_fdiv = 10'd32;
dyn_odiv0 = 10'd100;
dyn_odiv1 = 10'd100;
dyn_odiv2 = 10'd100;
dyn_odiv3 = 10'd100;
dyn_odiv4 = 10'd100;
dyn_duty0 = 10'd100;
dyn_duty1 = 10'd100;
dyn_duty2 = 10'd100;
dyn_duty3 = 10'd100;
dyn_duty4 = 10'd100;
dyn_phase0 = 13'd16;
dyn_phase1 = 13'd16;
dyn_phase2 = 13'd16;
dyn_phase3 = 13'd16;
dyn_phase4 = 13'd16;
#10
pll_pwd = 1;
#20
pll_pwd = 0;
pll_rst = 0;
#10
pll_rst = 1;
#20
pll_rst = 0;
#1000000
dyn_odiv0 = 10'd200;
dyn_odiv1 = 10'd200;
dyn_odiv2 = 10'd200;
dyn_odiv3 = 10'd200;
dyn_odiv4 = 10'd200;
dyn_duty0 = 10'd200;
dyn_duty1 = 10'd200;
dyn_duty2 = 10'd200;
dyn_duty3 = 10'd200;
dyn_duty4 = 10'd200;
#3000000
$finish;
end
initial
begin
$display("Simulation Starts.") ;
$display("Simulation is done.") ;
if (|results_cnt)
$display("Simulation Failed due to Error Found.") ;
else
$display("Simulation Success.") ;
end
GTP_GRS GRS_INST(
.GRS_N(1'b1)
);
inclkpll U_inclkpll (
.clkout0(clkout0),
.clkin1(clkin1),
.pll_lock(pll_lock)
);
//******************Results Cheching************************
reg [2:0] pll_lock_shift;
wire pll_lock_pulse = ~pll_lock_shift[2] & pll_lock_shift[1];
always @( posedge clk_tb or negedge rst_n )
begin
if (!rst_n)
begin
pll_lock_shift <= 3'd0;
end
else
begin
pll_lock_shift[0] <= pll_lock;
pll_lock_shift[2:1] <= pll_lock_shift[1:0];
end
end
reg [1:0] pll_lock_pulse_cnt;
always @( posedge clk_tb or negedge rst_n )
begin
if (!rst_n)
begin
pll_lock_pulse_cnt <= 2'd0;
end
else
begin
if (pll_lock_pulse)
pll_lock_pulse_cnt <= pll_lock_pulse_cnt + 1;
else ;
end
end
always @( posedge clk_tb or negedge rst_n )
begin
if (!rst_n)
begin
err_chk <= 1'b0;
end
else
begin
if ((!pll_lock) && (^pll_lock_pulse_cnt))
err_chk <= 1'b1;
else if (pll_lock_pulse_cnt[1])
err_chk <= 1'b1;
else
err_chk <= 1'b0;
end
end
always @(posedge clk_tb or negedge rst_n)
begin
if (!rst_n)
results_cnt <= 3'b000 ;
else if (&results_cnt)
results_cnt <= 3'b100 ;
else if (err_chk)
results_cnt <= results_cnt + 3'd1 ;
end
integer result_fid;
initial begin
result_fid = $fopen ("sim_results.log","a");
$fmonitor(result_fid,"err_chk=%b", err_chk);
end
endmodule

13
ipcore/inclkpll/inclkpll_tmpl.v

@ -0,0 +1,13 @@
// Created by IP Generator (Version 2021.1-SP7 build 86875)
// Instantiation Template
//
// Insert the following codes into your Verilog file.
// * Change the_instance_name to your own instance name.
// * Change the signal names in the port associations
inclkpll the_instance_name (
.clkin1(clkin1), // input
.pll_lock(pll_lock), // output
.clkout0(clkout0) // output
);

23
ipcore/inclkpll/inclkpll_tmpl.vhdl

@ -0,0 +1,23 @@
-- Created by IP Generator (Version 2021.1-SP7 build 86875)
-- Instantiation Template
--
-- Insert the following codes into your VHDL file.
-- * Change the_instance_name to your own instance name.
-- * Change the net names in the port map.
COMPONENT inclkpll
PORT (
clkin1 : IN STD_LOGIC;
pll_lock : OUT STD_LOGIC;
clkout0 : OUT STD_LOGIC
);
END COMPONENT;
the_instance_name : inclkpll
PORT MAP (
clkin1 => clkin1,
pll_lock => pll_lock,
clkout0 => clkout0
);

178
led_test.fdc

@ -70,87 +70,97 @@ define_attribute {p:sys_clk} {PAP_IO_STANDARD} {LVTTL33}
#define_attribute {p:tx_TxD_start} {PAP_IO_STANDARD} {LVCMOS33}
#define_attribute {p:tx_TxD_start} {PAP_IO_DRIVE} {4}
#define_attribute {p:tx_TxD_start} {PAP_IO_SLEW} {SLOW}
define_attribute {p:test_io3} {PAP_IO_DIRECTION} {OUTPUT}
define_attribute {p:test_io3} {PAP_IO_LOC} {T11}
define_attribute {p:test_io3} {PAP_IO_VCCIO} {3.3}
define_attribute {p:test_io3} {PAP_IO_STANDARD} {LVCMOS33}
define_attribute {p:test_io3} {PAP_IO_DRIVE} {4}
define_attribute {p:test_io3} {PAP_IO_SLEW} {SLOW}
define_attribute {p:test_io4} {PAP_IO_DIRECTION} {OUTPUT}
define_attribute {p:test_io4} {PAP_IO_LOC} {R11}
define_attribute {p:test_io4} {PAP_IO_VCCIO} {3.3}
define_attribute {p:test_io4} {PAP_IO_STANDARD} {LVCMOS33}
define_attribute {p:test_io4} {PAP_IO_DRIVE} {4}
define_attribute {p:test_io4} {PAP_IO_SLEW} {SLOW}
define_attribute {p:test_io5} {PAP_IO_DIRECTION} {OUTPUT}
define_attribute {p:test_io5} {PAP_IO_LOC} {P12}
define_attribute {p:test_io5} {PAP_IO_VCCIO} {3.3}
define_attribute {p:test_io5} {PAP_IO_STANDARD} {LVCMOS33}
define_attribute {p:test_io5} {PAP_IO_DRIVE} {4}
define_attribute {p:test_io5} {PAP_IO_SLEW} {SLOW}
define_attribute {p:test_io6} {PAP_IO_DIRECTION} {OUTPUT}
define_attribute {p:test_io6} {PAP_IO_LOC} {P11}
define_attribute {p:test_io6} {PAP_IO_VCCIO} {3.3}
define_attribute {p:test_io6} {PAP_IO_STANDARD} {LVCMOS33}
define_attribute {p:test_io6} {PAP_IO_DRIVE} {4}
define_attribute {p:test_io6} {PAP_IO_SLEW} {SLOW}
define_attribute {p:test_io7} {PAP_IO_DIRECTION} {OUTPUT}
define_attribute {p:test_io7} {PAP_IO_LOC} {T13}
define_attribute {p:test_io7} {PAP_IO_VCCIO} {3.3}
define_attribute {p:test_io7} {PAP_IO_STANDARD} {LVCMOS33}
define_attribute {p:test_io7} {PAP_IO_DRIVE} {4}
define_attribute {p:test_io7} {PAP_IO_SLEW} {SLOW}
define_attribute {p:test_io8} {PAP_IO_DIRECTION} {OUTPUT}
define_attribute {p:test_io8} {PAP_IO_LOC} {R13}
define_attribute {p:test_io8} {PAP_IO_VCCIO} {3.3}
define_attribute {p:test_io8} {PAP_IO_STANDARD} {LVCMOS33}
define_attribute {p:test_io8} {PAP_IO_DRIVE} {4}
define_attribute {p:test_io8} {PAP_IO_SLEW} {SLOW}
define_attribute {p:test_io9} {PAP_IO_DIRECTION} {OUTPUT}
define_attribute {p:test_io9} {PAP_IO_LOC} {P13}
define_attribute {p:test_io9} {PAP_IO_VCCIO} {3.3}
define_attribute {p:test_io9} {PAP_IO_STANDARD} {LVCMOS33}
define_attribute {p:test_io9} {PAP_IO_DRIVE} {4}
define_attribute {p:test_io9} {PAP_IO_SLEW} {SLOW}
define_attribute {p:test_io10} {PAP_IO_DIRECTION} {OUTPUT}
define_attribute {p:test_io10} {PAP_IO_LOC} {P14}
define_attribute {p:test_io10} {PAP_IO_VCCIO} {3.3}
define_attribute {p:test_io10} {PAP_IO_STANDARD} {LVCMOS33}
define_attribute {p:test_io10} {PAP_IO_DRIVE} {4}
define_attribute {p:test_io10} {PAP_IO_SLEW} {SLOW}
define_attribute {p:test_io11} {PAP_IO_DIRECTION} {OUTPUT}
define_attribute {p:test_io11} {PAP_IO_LOC} {R15}
define_attribute {p:test_io11} {PAP_IO_VCCIO} {3.3}
define_attribute {p:test_io11} {PAP_IO_STANDARD} {LVCMOS33}
define_attribute {p:test_io11} {PAP_IO_DRIVE} {4}
define_attribute {p:test_io11} {PAP_IO_SLEW} {SLOW}
define_attribute {p:test_io12} {PAP_IO_DIRECTION} {OUTPUT}
define_attribute {p:test_io12} {PAP_IO_LOC} {R14}
define_attribute {p:test_io12} {PAP_IO_VCCIO} {3.3}
define_attribute {p:test_io12} {PAP_IO_STANDARD} {LVCMOS33}
define_attribute {p:test_io12} {PAP_IO_DRIVE} {4}
define_attribute {p:test_io12} {PAP_IO_SLEW} {SLOW}
define_attribute {p:test_io13} {PAP_IO_DIRECTION} {OUTPUT}
define_attribute {p:test_io13} {PAP_IO_LOC} {T16}
define_attribute {p:test_io13} {PAP_IO_VCCIO} {3.3}
define_attribute {p:test_io13} {PAP_IO_STANDARD} {LVCMOS33}
define_attribute {p:test_io13} {PAP_IO_DRIVE} {4}
define_attribute {p:test_io13} {PAP_IO_SLEW} {SLOW}
define_attribute {p:test_io14} {PAP_IO_DIRECTION} {OUTPUT}
define_attribute {p:test_io14} {PAP_IO_LOC} {R16}
define_attribute {p:test_io14} {PAP_IO_VCCIO} {3.3}
define_attribute {p:test_io14} {PAP_IO_STANDARD} {LVCMOS33}
define_attribute {p:test_io14} {PAP_IO_DRIVE} {4}
define_attribute {p:test_io14} {PAP_IO_SLEW} {SLOW}
define_attribute {p:test_io15} {PAP_IO_DIRECTION} {OUTPUT}
define_attribute {p:test_io15} {PAP_IO_LOC} {U16}
define_attribute {p:test_io15} {PAP_IO_VCCIO} {3.3}
define_attribute {p:test_io15} {PAP_IO_STANDARD} {LVCMOS33}
define_attribute {p:test_io15} {PAP_IO_DRIVE} {4}
define_attribute {p:test_io15} {PAP_IO_SLEW} {SLOW}
define_attribute {p:test_io16} {PAP_IO_DIRECTION} {OUTPUT}
define_attribute {p:test_io16} {PAP_IO_LOC} {V16}
define_attribute {p:test_io16} {PAP_IO_VCCIO} {3.3}
define_attribute {p:test_io16} {PAP_IO_STANDARD} {LVCMOS33}
define_attribute {p:test_io16} {PAP_IO_DRIVE} {4}
define_attribute {p:test_io16} {PAP_IO_SLEW} {SLOW}
define_attribute {p:test_io[3]} {PAP_IO_DIRECTION} {OUTPUT}
define_attribute {p:test_io[3]} {PAP_IO_LOC} {T11}
define_attribute {p:test_io[3]} {PAP_IO_VCCIO} {3.3}
define_attribute {p:test_io[3]} {PAP_IO_STANDARD} {LVCMOS33}
define_attribute {p:test_io[3]} {PAP_IO_DRIVE} {4}
define_attribute {p:test_io[3]} {PAP_IO_SLEW} {SLOW}
define_attribute {p:test_io[4]} {PAP_IO_DIRECTION} {OUTPUT}
define_attribute {p:test_io[4]} {PAP_IO_LOC} {R11}
define_attribute {p:test_io[4]} {PAP_IO_VCCIO} {3.3}
define_attribute {p:test_io[4]} {PAP_IO_STANDARD} {LVCMOS33}
define_attribute {p:test_io[4]} {PAP_IO_DRIVE} {4}
define_attribute {p:test_io[4]} {PAP_IO_SLEW} {SLOW}
define_attribute {p:test_io[5]} {PAP_IO_DIRECTION} {OUTPUT}
define_attribute {p:test_io[5]} {PAP_IO_LOC} {P12}
define_attribute {p:test_io[5]} {PAP_IO_VCCIO} {3.3}
define_attribute {p:test_io[5]} {PAP_IO_STANDARD} {LVCMOS33}
define_attribute {p:test_io[5]} {PAP_IO_DRIVE} {4}
define_attribute {p:test_io[5]} {PAP_IO_SLEW} {SLOW}
define_attribute {p:test_io[6]} {PAP_IO_DIRECTION} {OUTPUT}
define_attribute {p:test_io[6]} {PAP_IO_LOC} {P11}
define_attribute {p:test_io[6]} {PAP_IO_VCCIO} {3.3}
define_attribute {p:test_io[6]} {PAP_IO_STANDARD} {LVCMOS33}
define_attribute {p:test_io[6]} {PAP_IO_DRIVE} {4}
define_attribute {p:test_io[6]} {PAP_IO_SLEW} {SLOW}
define_attribute {p:test_io[7]} {PAP_IO_DIRECTION} {OUTPUT}
define_attribute {p:test_io[7]} {PAP_IO_LOC} {T13}
define_attribute {p:test_io[7]} {PAP_IO_VCCIO} {3.3}
define_attribute {p:test_io[7]} {PAP_IO_STANDARD} {LVCMOS33}
define_attribute {p:test_io[7]} {PAP_IO_DRIVE} {4}
define_attribute {p:test_io[7]} {PAP_IO_SLEW} {SLOW}
define_attribute {p:test_io[8]} {PAP_IO_DIRECTION} {OUTPUT}
define_attribute {p:test_io[8]} {PAP_IO_LOC} {R13}
define_attribute {p:test_io[8]} {PAP_IO_VCCIO} {3.3}
define_attribute {p:test_io[8]} {PAP_IO_STANDARD} {LVCMOS33}
define_attribute {p:test_io[8]} {PAP_IO_DRIVE} {4}
define_attribute {p:test_io[8]} {PAP_IO_SLEW} {SLOW}
define_attribute {p:test_io[9]} {PAP_IO_DIRECTION} {OUTPUT}
define_attribute {p:test_io[9]} {PAP_IO_LOC} {P13}
define_attribute {p:test_io[9]} {PAP_IO_VCCIO} {3.3}
define_attribute {p:test_io[9]} {PAP_IO_STANDARD} {LVCMOS33}
define_attribute {p:test_io[9]} {PAP_IO_DRIVE} {4}
define_attribute {p:test_io[9]} {PAP_IO_SLEW} {SLOW}
define_attribute {p:test_io[10]} {PAP_IO_DIRECTION} {OUTPUT}
define_attribute {p:test_io[10]} {PAP_IO_LOC} {P14}
define_attribute {p:test_io[10]} {PAP_IO_VCCIO} {3.3}
define_attribute {p:test_io[10]} {PAP_IO_STANDARD} {LVCMOS33}
define_attribute {p:test_io[10]} {PAP_IO_DRIVE} {4}
define_attribute {p:test_io[10]} {PAP_IO_SLEW} {SLOW}
define_attribute {p:test_io[11]} {PAP_IO_DIRECTION} {OUTPUT}
define_attribute {p:test_io[11]} {PAP_IO_LOC} {R15}
define_attribute {p:test_io[11]} {PAP_IO_VCCIO} {3.3}
define_attribute {p:test_io[11]} {PAP_IO_STANDARD} {LVCMOS33}
define_attribute {p:test_io[11]} {PAP_IO_DRIVE} {4}
define_attribute {p:test_io[11]} {PAP_IO_SLEW} {SLOW}
define_attribute {p:test_io[12]} {PAP_IO_DIRECTION} {OUTPUT}
define_attribute {p:test_io[12]} {PAP_IO_LOC} {R14}
define_attribute {p:test_io[12]} {PAP_IO_VCCIO} {3.3}
define_attribute {p:test_io[12]} {PAP_IO_STANDARD} {LVCMOS33}
define_attribute {p:test_io[12]} {PAP_IO_DRIVE} {4}
define_attribute {p:test_io[12]} {PAP_IO_SLEW} {SLOW}
define_attribute {p:test_io[13]} {PAP_IO_DIRECTION} {OUTPUT}
define_attribute {p:test_io[13]} {PAP_IO_LOC} {T16}
define_attribute {p:test_io[13]} {PAP_IO_VCCIO} {3.3}
define_attribute {p:test_io[13]} {PAP_IO_STANDARD} {LVCMOS33}
define_attribute {p:test_io[13]} {PAP_IO_DRIVE} {4}
define_attribute {p:test_io[13]} {PAP_IO_SLEW} {SLOW}
define_attribute {p:test_io[14]} {PAP_IO_DIRECTION} {OUTPUT}
define_attribute {p:test_io[14]} {PAP_IO_LOC} {R16}
define_attribute {p:test_io[14]} {PAP_IO_VCCIO} {3.3}
define_attribute {p:test_io[14]} {PAP_IO_STANDARD} {LVCMOS33}
define_attribute {p:test_io[14]} {PAP_IO_DRIVE} {4}
define_attribute {p:test_io[14]} {PAP_IO_SLEW} {SLOW}
define_attribute {p:test_io[15]} {PAP_IO_DIRECTION} {OUTPUT}
define_attribute {p:test_io[15]} {PAP_IO_LOC} {U16}
define_attribute {p:test_io[15]} {PAP_IO_VCCIO} {3.3}
define_attribute {p:test_io[15]} {PAP_IO_STANDARD} {LVCMOS33}
define_attribute {p:test_io[15]} {PAP_IO_DRIVE} {4}
define_attribute {p:test_io[15]} {PAP_IO_SLEW} {SLOW}
define_attribute {p:test_io[16]} {PAP_IO_DIRECTION} {OUTPUT}
define_attribute {p:test_io[16]} {PAP_IO_LOC} {V16}
define_attribute {p:test_io[16]} {PAP_IO_VCCIO} {3.3}
define_attribute {p:test_io[16]} {PAP_IO_STANDARD} {LVCMOS33}
define_attribute {p:test_io[16]} {PAP_IO_DRIVE} {4}
define_attribute {p:test_io[16]} {PAP_IO_SLEW} {SLOW}
define_attribute {p:usb_serial_tx} {PAP_IO_DIRECTION} {OUTPUT}
define_attribute {p:usb_serial_tx} {PAP_IO_LOC} {C10}
define_attribute {p:usb_serial_tx} {PAP_IO_VCCIO} {3.3}
define_attribute {p:usb_serial_tx} {PAP_IO_STANDARD} {LVCMOS33}
define_attribute {p:usb_serial_tx} {PAP_IO_DRIVE} {4}
define_attribute {p:usb_serial_tx} {PAP_IO_SLEW} {SLOW}
define_attribute {p:usb_serial_rx} {PAP_IO_DIRECTION} {INPUT}
define_attribute {p:usb_serial_rx} {PAP_IO_LOC} {A12}
define_attribute {p:usb_serial_rx} {PAP_IO_VCCIO} {3.3}
define_attribute {p:usb_serial_rx} {PAP_IO_STANDARD} {LVTTL33}

128
led_test.pds

@ -1,5 +1,5 @@
(_flow fab_demo "2021.1-SP7"
(_comment "Generated by Fabric Compiler (version on 2021.1-SP7<build 86875>) at Thu Dec 14 20:47:37 2023")
(_comment "Generated by Fabric Compiler (version on 2021.1-SP7<build 86875>) at Thu Dec 14 21:56:34 2023")
(_version "1.0.5")
(_status "initial")
(_project
@ -27,7 +27,7 @@
)
(_file "source/src/top.v" + "Top"
(_format verilog)
(_timespec "2023-12-14T16:57:50")
(_timespec "2023-12-14T21:43:40")
)
(_file "source/src/uart_tx.v"
(_format verilog)
@ -41,15 +41,27 @@
(_format verilog)
(_timespec "2023-12-14T20:47:29")
)
(_file "source/src/monitor_line.v"
(_format verilog)
(_timespec "2023-12-14T21:44:03")
)
)
)
(_widget wgt_my_ips_src
(_input
(_ip "ipcore/inclkpll/inclkpll.idf"
(_timespec "2023-12-14T21:34:50")
(_ip_source_item "ipcore/inclkpll/inclkpll.v"
(_timespec "2023-12-14T21:34:50")
)
)
)
)
(_widget wgt_import_logic_con_file
(_input
(_file "led_test.fdc"
(_format fdc)
(_timespec "2023-12-13T22:49:15")
(_timespec "2023-12-14T21:55:40")
)
)
)
@ -88,17 +100,17 @@
(_db_output
(_file "compile/Top_comp.adf"
(_format adif)
(_timespec "2023-12-14T20:47:35")
(_timespec "2023-12-14T21:55:55")
)
)
(_output
(_file "compile/Top.cmr"
(_format verilog)
(_timespec "2023-12-14T20:47:35")
(_timespec "2023-12-14T21:55:55")
)
(_file "compile/cmr.db"
(_format text)
(_timespec "2023-12-14T20:47:35")
(_timespec "2023-12-14T21:55:55")
)
)
)
@ -114,21 +126,21 @@
(_db_output
(_file "synthesize/Top_syn.adf"
(_format adif)
(_timespec "2023-12-14T20:47:37")
(_timespec "2023-12-14T21:55:58")
)
)
(_output
(_file "synthesize/Top_syn.vm"
(_format structural_verilog)
(_timespec "2023-12-14T20:47:37")
(_timespec "2023-12-14T21:55:58")
)
(_file "synthesize/Top.snr"
(_format text)
(_timespec "2023-12-14T20:47:37")
(_timespec "2023-12-14T21:55:58")
)
(_file "synthesize/snr.db"
(_format text)
(_timespec "2023-12-14T20:47:37")
(_timespec "2023-12-14T21:55:58")
)
)
)
@ -145,14 +157,34 @@
)
(_task tsk_devmap
(_command cmd_devmap
(_gci_state (_integer 0))
(_gci_state (_integer 2))
(_db_output
(_file "device_map/Top_map.adf"
(_format adif)
(_timespec "2023-12-14T21:56:00")
)
)
(_output
(_file "device_map/Top_dmr.prt"
(_format text)
(_timespec "2023-12-14T21:56:00")
)
(_file "device_map/Top.dmr"
(_format text)
(_timespec "2023-12-14T21:56:00")
)
(_file "device_map/dmr.db"
(_format text)
(_timespec "2023-12-14T21:56:00")
)
)
)
(_widget wgt_edit_placement_cons
(_attribute _click_to_run (_switch ON))
(_input
(_file "device_map/led_test.pcf"
(_format pcf)
(_timespec "2023-12-14T20:10:02")
(_timespec "2023-12-14T21:56:00")
)
)
)
@ -162,7 +194,39 @@
)
(_task tsk_pnr
(_command cmd_pnr
(_gci_state (_integer 0))
(_gci_state (_integer 2))
(_db_output
(_file "place_route/Top_pnr.adf"
(_format adif)
(_timespec "2023-12-14T21:56:20")
)
)
(_output
(_file "place_route/Top.prr"
(_format text)
(_timespec "2023-12-14T21:56:20")
)
(_file "place_route/Top_prr.prt"
(_format text)
(_timespec "2023-12-14T21:56:20")
)
(_file "place_route/clock_utilization.txt"
(_format text)
(_timespec "2023-12-14T21:56:20")
)
(_file "place_route/Top_plc.adf"
(_format adif)
(_timespec "2023-12-14T21:56:14")
)
(_file "place_route/Top_pnr.netlist"
(_format text)
(_timespec "2023-12-14T21:56:20")
)
(_file "place_route/prr.db"
(_format text)
(_timespec "2023-12-14T21:56:21")
)
)
)
(_widget wgt_power_calculator
(_attribute _click_to_run (_switch ON))
@ -171,8 +235,24 @@
(_attribute _click_to_run (_switch ON))
)
(_command cmd_report_post_pnr_timing
(_gci_state (_integer 0))
(_gci_state (_integer 2))
(_attribute _auto_exe_lock (_switch OFF))
(_db_output
(_file "report_timing/Top_rtp.adf"
(_format adif)
(_timespec "2023-12-14T21:56:24")
)
)
(_output
(_file "report_timing/Top.rtr"
(_format text)
(_timespec "2023-12-14T21:56:24")
)
(_file "report_timing/rtr.db"
(_format text)
(_timespec "2023-12-14T21:56:25")
)
)
)
(_widget wgt_arch_browser
(_attribute _click_to_run (_switch ON))
@ -190,7 +270,25 @@
)
(_task tsk_gen_bitstream
(_command cmd_gen_bitstream
(_gci_state (_integer 0))
(_gci_state (_integer 2))
(_output
(_file "generate_bitstream/Top.sbit"
(_format text)
(_timespec "2023-12-14T21:56:33")
)
(_file "generate_bitstream/Top.smsk"
(_format text)
(_timespec "2023-12-14T21:56:33")
)
(_file "generate_bitstream/Top.bgr"
(_format text)
(_timespec "2023-12-14T21:56:33")
)
(_file "generate_bitstream/bgr.db"
(_format text)
(_timespec "2023-12-14T21:56:34")
)
)
)
)
)

18
source/src/monitor_line.v

@ -0,0 +1,18 @@
/*
* Hacky baud rate generator to divide a 50MHz clock into a 115200 baud
* rx/tx pair where the rx clcken oversamples by 16x.
*/
module monitor_line (
input wire clk_50m,
input wire rst_n,
input wire in,
output reg out
);
always @(posedge clk_50m or negedge rst_n) begin
if (!rst_n) out <= 1'b0;
else out <= in;
end
endmodule

36
source/src/top.v

@ -3,22 +3,30 @@ module Top (
input sys_clk,
input rst_n,
output reg [3:0] led,
output wire test_io3,
output wire test_io4,
output wire test_io5,
output wire test_io6,
output wire test_io7,
output wire test_io8,
output wire test_io9,
output wire test_io10,
output wire test_io11,
output wire test_io12,
output wire test_io13,
output wire test_io14,
output wire test_io15,
output wire test_io16
output reg [3:0] key,
output wire usb_serial_tx,
input wire usb_serial_rx,
output wire [35:3] test_io
);
wire inclkpll_clk0out;
inclkpll inclkpll_inst (
.clkin1 (sys_clk),
.clkout0(inclkpll_clk0out)
);
uart_reg_reader uart_reg_reader_impl (
.clk(sys_clk),
.rst_n(rst_n),
.reg_data(),
.reg_add(),
.reg_add_valid(),
.uart_rx_pin(usb_serial_rx),
.uart_tx_pin(usb_serial_tx)
);
monitor_line monitor_line_usb_serial_rx(sys_clk, rst_n, usb_serial_rx, test_io[4]);
assign test_io[3] = usb_serial_tx;
// assign test_io[3] = inclkpll_clk0out;
endmodule
Loading…
Cancel
Save