Skip to content

Commit ea057ab

Browse files
committed
Add Digilent ArtyA7-35T FPGA board via open-source Symbiflow
1 parent c10987b commit ea057ab

File tree

4 files changed

+122
-40
lines changed

4 files changed

+122
-40
lines changed

constraints/arty_a7.xdc

+26-13
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,31 @@
11
# Clock pin
2-
set_property PACKAGE_PIN E3 [get_ports {clock}]
3-
set_property IOSTANDARD LVCMOS33 [get_ports {clock}]
2+
set_property -dict { PACKAGE_PIN E3 IOSTANDARD LVCMOS33 } [get_ports {clock}]
3+
4+
# Clock constraints
5+
create_clock -period 10.0 [get_ports {clock}]
6+
7+
# Reset
8+
set_property -dict { PACKAGE_PIN C2 IOSTANDARD LVCMOS33 } [get_ports { reset }]
49

510
# LEDs
6-
set_property PACKAGE_PIN H5 [get_ports {io_led0}]
7-
set_property PACKAGE_PIN J5 [get_ports {io_GPIO0[0]}]
8-
set_property PACKAGE_PIN T9 [get_ports {io_GPIO0[1]}]
9-
set_property IOSTANDARD LVCMOS33 [get_ports {io_led0}]
10-
set_property IOSTANDARD LVCMOS33 [get_ports {io_GPIO0}]
11-
set_property IOSTANDARD LVCMOS33 [get_ports {io_GPIO0[1]}]
11+
set_property -dict { PACKAGE_PIN H5 IOSTANDARD LVCMOS33 } [get_ports {io_led0}]
12+
set_property -dict { PACKAGE_PIN J5 IOSTANDARD LVCMOS33 } [get_ports {io_GPIO0[0]}]
13+
set_property -dict { PACKAGE_PIN T9 IOSTANDARD LVCMOS33 } [get_ports {io_GPIO0[1]}]
14+
set_property -dict { PACKAGE_PIN T10 IOSTANDARD LVCMOS33 } [get_ports {io_GPIO0[2]}]
15+
16+
set_property -dict { PACKAGE_PIN H6 IOSTANDARD LVCMOS33 } [get_ports { io_GPIO0[3] }]; #IO_L24P_T3_35 Sch=led3_g
17+
set_property -dict { PACKAGE_PIN J2 IOSTANDARD LVCMOS33 } [get_ports { io_GPIO0[4] }]; #IO_L22N_T3_35 Sch=led2_g
18+
set_property -dict { PACKAGE_PIN J4 IOSTANDARD LVCMOS33 } [get_ports { io_GPIO0[5] }]; #IO_L21P_T3_DQS_35 Sch=led1_g
19+
set_property -dict { PACKAGE_PIN F6 IOSTANDARD LVCMOS33 } [get_ports { io_GPIO0[6] }]; #IO_L19N_T3_VREF_35 Sch=led0_g
20+
21+
##Buttons
22+
set_property -dict { PACKAGE_PIN D9 IOSTANDARD LVCMOS33 } [get_ports { io_GPIO0[7] }]; #IO_L6N_T0_VREF_16 Sch=btn[0]
23+
# set_property -dict { PACKAGE_PIN C9 IOSTANDARD LVCMOS33 } [get_ports { io_GPIO0[8] }]; #IO_L11P_T1_SRCC_16 Sch=btn[1]
24+
# set_property -dict { PACKAGE_PIN B9 IOSTANDARD LVCMOS33 } [get_ports { btn[2] }]; #IO_L11N_T1_SRCC_16 Sch=btn[2]
25+
# set_property -dict { PACKAGE_PIN B8 IOSTANDARD LVCMOS33 } [get_ports { btn[3] }]; #IO_L12P_T1_MRCC_16 Sch=btn[3]
26+
27+
##USB-UART Interface
28+
set_property -dict { PACKAGE_PIN D10 IOSTANDARD LVCMOS33 } [get_ports { io_UART0tx }];
29+
set_property -dict { PACKAGE_PIN A9 IOSTANDARD LVCMOS33 } [get_ports { io_UART0rx }];
1230

13-
# Switches
14-
set_property PACKAGE_PIN D9 [get_ports { reset }]
15-
set_property IOSTANDARD LVCMOS33 [get_ports { reset }]
1631

17-
# Clock constraints
18-
create_clock -period 10.0 [get_ports {clock}]

openocd/digilent-hs1.cfg

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# this supports JTAG-HS1 and JTAG-SMT1
22
# (the later being the OEM on-board version)
33

4-
interface ftdi
4+
adapter driver ftdi
55
ftdi_device_desc "Digilent USB Device"
66
ftdi_vid_pid 0x0403 0x6010
77
# channel 1 does not have any functionality
@@ -11,4 +11,4 @@ ftdi_layout_init 0x0088 0x008b
1111
reset_config none
1212

1313
# default speed
14-
adapter_khz 5000
14+
adapter speed 5000

openocd/ecp5-evn.cfg

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# this supports ECP5 Evaluation Board
22

3-
interface ftdi
3+
adapter driver ftdi
44
ftdi_device_desc "Lattice ECP5 Evaluation Board"
55
ftdi_vid_pid 0x0403 0x6010
66
# channel 1 does not have any functionality
@@ -10,4 +10,4 @@ ftdi_layout_init 0xfff8 0xfffb
1010
reset_config none
1111

1212
# default speed
13-
adapter_khz 5000
13+
adapter speed 5000

src/main/resources/pll_artya7-35t.v

+92-23
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,85 @@
1+
2+
// file: chiselv_pll0.v
3+
//
4+
// (c) Copyright 2008 - 2013 Xilinx, Inc. All rights reserved.
5+
//
6+
// This file contains confidential and proprietary information
7+
// of Xilinx, Inc. and is protected under U.S. and
8+
// international copyright and other intellectual property
9+
// laws.
10+
//
11+
// DISCLAIMER
12+
// This disclaimer is not a license and does not grant any
13+
// rights to the materials distributed herewith. Except as
14+
// otherwise provided in a valid license issued to you by
15+
// Xilinx, and to the maximum extent permitted by applicable
16+
// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
17+
// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
18+
// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
19+
// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
20+
// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
21+
// (2) Xilinx shall not be liable (whether in contract or tort,
22+
// including negligence, or under any other theory of
23+
// liability) for any loss or damage of any kind or nature
24+
// related to, arising under or in connection with these
25+
// materials, including for any direct, or any indirect,
26+
// special, incidental, or consequential loss or damage
27+
// (including loss of data, profits, goodwill, or any type of
28+
// loss or damage suffered as a result of any action brought
29+
// by a third party) even if such damage or loss was
30+
// reasonably foreseeable or Xilinx had been advised of the
31+
// possibility of the same.
32+
//
33+
// CRITICAL APPLICATIONS
34+
// Xilinx products are not designed or intended to be fail-
35+
// safe, or for use in any application requiring fail-safe
36+
// performance, such as life-support or safety devices or
37+
// systems, Class III medical devices, nuclear facilities,
38+
// applications related to the deployment of airbags, or any
39+
// other applications that could lead to death, personal
40+
// injury, or severe property or environmental damage
41+
// (individually and collectively, "Critical
42+
// Applications"). Customer assumes the sole risk and
43+
// liability of any use of Xilinx products in Critical
44+
// Applications, subject only to applicable laws and
45+
// regulations governing limitations on product liability.
46+
//
47+
// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
48+
// PART OF THIS FILE AT ALL TIMES.
49+
//
50+
//----------------------------------------------------------------------------
51+
// User entered comments
52+
//----------------------------------------------------------------------------
53+
// None
54+
//
55+
//----------------------------------------------------------------------------
56+
// Output Output Phase Duty Cycle Pk-to-Pk Phase
57+
// Clock Freq (MHz) (degrees) (%) Jitter (ps) Error (ps)
58+
//----------------------------------------------------------------------------
59+
// ____clko__15.00000______0.000______50.0______387.320____261.747
60+
//
61+
//----------------------------------------------------------------------------
62+
// Input Clock Freq (MHz) Input Jitter (UI)
63+
//----------------------------------------------------------------------------
64+
// __primary_________100.000____________0.010
65+
166
`timescale 1ps/1ps
267

368
module PLL0
469

5-
(
70+
(// Clock in ports
71+
// Clock out ports
672
output clko,
73+
// Status and control signals
774
output lock,
875
input clki
976
);
1077
// Input buffering
1178
//------------------------------------
12-
wire clki_clk_wiz_0;
79+
wire clki_chiselv_pll0;
80+
wire clk_in2_chiselv_pll0;
1381
IBUF clkin1_ibufg
14-
(.O (clki_clk_wiz_0),
82+
(.O (clki_chiselv_pll0),
1583
.I (clki));
1684

1785
// Clocking PRIMITIVE
@@ -21,20 +89,20 @@ wire clki_clk_wiz_0;
2189
// * Unused inputs are tied off
2290
// * Unused outputs are labeled unused
2391

24-
wire clko_clk_wiz_0;
25-
wire clk_out2_clk_wiz_0;
26-
wire clk_out3_clk_wiz_0;
27-
wire clk_out4_clk_wiz_0;
28-
wire clk_out5_clk_wiz_0;
29-
wire clk_out6_clk_wiz_0;
30-
wire clk_out7_clk_wiz_0;
92+
wire clko_chiselv_pll0;
93+
wire clk_out2_chiselv_pll0;
94+
wire clk_out3_chiselv_pll0;
95+
wire clk_out4_chiselv_pll0;
96+
wire clk_out5_chiselv_pll0;
97+
wire clk_out6_chiselv_pll0;
98+
wire clk_out7_chiselv_pll0;
3199

32100
wire [15:0] do_unused;
33101
wire drdy_unused;
34102
wire psdone_unused;
35103
wire lock_int;
36-
wire clkfbout_clk_wiz_0;
37-
wire clkfbout_buf_clk_wiz_0;
104+
wire clkfbout_chiselv_pll0;
105+
wire clkfbout_buf_chiselv_pll0;
38106
wire clkfboutb_unused;
39107
wire clkout1_unused;
40108
wire clkout2_unused;
@@ -52,25 +120,25 @@ wire clki_clk_wiz_0;
52120
.DIVCLK_DIVIDE (4),
53121
.CLKFBOUT_MULT (33),
54122
.CLKFBOUT_PHASE (0.000),
55-
.CLKOUT0_DIVIDE (33),
123+
.CLKOUT0_DIVIDE (55),
56124
.CLKOUT0_PHASE (0.000),
57125
.CLKOUT0_DUTY_CYCLE (0.500),
58-
.CLKIN1_PERIOD (10.000),
59-
.CLKIN2_PERIOD (10.312))
126+
.CLKIN1_PERIOD (10.000))
60127
plle2_adv_inst
61128
// Output clocks
62129
(
63-
.CLKFBOUT (clkfbout_clk_wiz_0),
64-
.CLKOUT0 (clko_clk_wiz_0),
130+
.CLKFBOUT (clkfbout_chiselv_pll0),
131+
.CLKOUT0 (clko_chiselv_pll0),
65132
.CLKOUT1 (clkout1_unused),
66133
.CLKOUT2 (clkout2_unused),
67134
.CLKOUT3 (clkout3_unused),
68135
.CLKOUT4 (clkout4_unused),
69136
.CLKOUT5 (clkout5_unused),
70137
// Input clock control
71-
.CLKFBIN (clkfbout_buf_clk_wiz_0),
72-
.CLKIN1 (clki_clk_wiz_0),
73-
.CLKIN2 (clki_clk_wiz_0),
138+
.CLKFBIN (clkfbout_buf_chiselv_pll0),
139+
.CLKIN1 (clki_chiselv_pll0),
140+
.CLKIN2 (1'b0),
141+
// Tied to always select the primary input clock
74142
.CLKINSEL (1'b1),
75143
// Ports for dynamic reconfiguration
76144
.DADDR (7'h0),
@@ -92,11 +160,12 @@ wire clki_clk_wiz_0;
92160
//-----------------------------------
93161

94162
BUFG clkf_buf
95-
(.O (clkfbout_buf_clk_wiz_0),
96-
.I (clkfbout_clk_wiz_0));
163+
(.O (clkfbout_buf_chiselv_pll0),
164+
.I (clkfbout_chiselv_pll0));
97165

98166
BUFG clkout1_buf
99167
(.O (clko),
100-
.I (clko_clk_wiz_0));
168+
.I (clko_chiselv_pll0));
169+
101170

102171
endmodule

0 commit comments

Comments
 (0)