Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
S
Simple VME FMC Carrier SVEC
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
14
Issues
14
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
image/svg+xml
Discourse
Discourse
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Projects
Simple VME FMC Carrier SVEC
Commits
46bd7e78
Commit
46bd7e78
authored
Sep 23, 2019
by
Tristan Gingold
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Rename template -> base
parent
3da89c5c
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
628 additions
and
33 deletions
+628
-33
Manifest.py
hdl/rtl/Manifest.py
+2
-2
svec_base_regs.cheby
hdl/rtl/svec_base_regs.cheby
+1
-1
svec_base_regs.vhd
hdl/rtl/svec_base_regs.vhd
+595
-0
svec_base_wr.vhd
hdl/rtl/svec_base_wr.vhd
+6
-6
Manifest.py
hdl/syn/common/Manifest.py
+10
-10
svec_base_common.ucf
hdl/syn/common/svec_base_common.ucf
+3
-3
svec_base_ddr4.ucf
hdl/syn/common/svec_base_ddr4.ucf
+0
-0
svec_base_ddr5.ucf
hdl/syn/common/svec_base_ddr5.ucf
+0
-0
svec_base_ddr_common.ucf
hdl/syn/common/svec_base_ddr_common.ucf
+8
-8
svec_base_gpio.ucf
hdl/syn/common/svec_base_gpio.ucf
+0
-0
svec_base_led.ucf
hdl/syn/common/svec_base_led.ucf
+0
-0
svec_base_wr.ucf
hdl/syn/common/svec_base_wr.ucf
+3
-3
No files found.
hdl/rtl/Manifest.py
View file @
46bd7e78
files
=
[
"svec_
templat
e_regs.vhd"
,
"svec_
templat
e_wr.vhd"
,
"svec_
bas
e_regs.vhd"
,
"svec_
bas
e_wr.vhd"
,
]
hdl/rtl/svec_
templat
e_regs.cheby
→
hdl/rtl/svec_
bas
e_regs.cheby
View file @
46bd7e78
memory-map:
name: svec_
templat
e_regs
name: svec_
bas
e_regs
bus: wb-32-be
size: 0x2000
children:
...
...
hdl/rtl/svec_
templat
e_regs.vhd
→
hdl/rtl/svec_
bas
e_regs.vhd
View file @
46bd7e78
This diff is collapsed.
Click to expand it.
hdl/rtl/svec_
templat
e_wr.vhd
→
hdl/rtl/svec_
bas
e_wr.vhd
View file @
46bd7e78
...
...
@@ -4,9 +4,9 @@
-- https://ohwr.org/projects/svec
--------------------------------------------------------------------------------
--
-- unit name: svec_
templat
e_wr
-- unit name: svec_
bas
e_wr
--
-- description: SVEC carrier
templat
e, with WR.
-- description: SVEC carrier
bas
e, with WR.
--
--------------------------------------------------------------------------------
-- Copyright CERN 2019
...
...
@@ -40,7 +40,7 @@ use work.streamers_pkg.all;
library
unisim
;
use
unisim
.
vcomponents
.
all
;
entity
svec_
templat
e_wr
is
entity
svec_
bas
e_wr
is
generic
(
-- If true, instantiate a VIC/ONEWIRE/SPI/WR/DDRAM+DMA.
g_WITH_VIC
:
boolean
:
=
True
;
...
...
@@ -324,9 +324,9 @@ entity svec_template_wr is
app_wb_o
:
out
t_wishbone_master_out
;
app_wb_i
:
in
t_wishbone_master_in
);
end
entity
svec_
templat
e_wr
;
end
entity
svec_
bas
e_wr
;
architecture
top
of
svec_
templat
e_wr
is
architecture
top
of
svec_
bas
e_wr
is
-- WRPC Xilinx platform auxiliary clock configuration, used for DDR clock
constant
c_WRPC_PLL_CONFIG
:
t_auxpll_cfg_array
:
=
(
0
=>
(
enabled
=>
TRUE
,
bufg_en
=>
TRUE
,
divide
=>
3
),
...
...
@@ -531,7 +531,7 @@ begin -- architecture top
master_o
(
1
)
=>
app_wb_o
);
inst_carrier
:
entity
work
.
svec_
templat
e_regs
inst_carrier
:
entity
work
.
svec_
bas
e_regs
port
map
(
rst_n_i
=>
rst_sys_62m5_n
,
clk_i
=>
clk_sys_62m5
,
...
...
hdl/syn/common/Manifest.py
View file @
46bd7e78
# User should define the variable svec_
templat
e_ucf
# User should define the variable svec_
bas
e_ucf
files
=
[
"svec_
templat
e_common.ucf"
]
files
=
[
"svec_
bas
e_common.ucf"
]
ucf_dict
=
{
'ddr4'
:
"svec_
templat
e_ddr4.ucf"
,
'ddr5'
:
"svec_
templat
e_ddr5.ucf"
,
'wr'
:
"svec_
templat
e_wr.ucf"
,
'led'
:
"svec_
templat
e_led.ucf"
,
'gpio'
:
"svec_
templat
e_gpio.ucf"
,
'ddr4'
:
"svec_
bas
e_ddr4.ucf"
,
'ddr5'
:
"svec_
bas
e_ddr5.ucf"
,
'wr'
:
"svec_
bas
e_wr.ucf"
,
'led'
:
"svec_
bas
e_led.ucf"
,
'gpio'
:
"svec_
bas
e_gpio.ucf"
,
}
for
p
in
svec_
templat
e_ucf
:
for
p
in
svec_
bas
e_ucf
:
f
=
ucf_dict
.
get
(
p
,
None
)
assert
f
is
not
None
,
"unknown name {} in 'svec_
templat
e_ucf'"
.
format
(
p
)
assert
f
is
not
None
,
"unknown name {} in 'svec_
bas
e_ucf'"
.
format
(
p
)
if
p
==
'ddr4'
or
p
==
'ddr5'
:
files
.
append
(
'svec_
templat
e_ddr_common.ucf'
)
files
.
append
(
'svec_
bas
e_ddr_common.ucf'
)
files
.
append
(
f
)
hdl/syn/common/svec_
templat
e_common.ucf
→
hdl/syn/common/svec_
bas
e_common.ucf
View file @
46bd7e78
...
...
@@ -219,7 +219,7 @@ TIMESPEC TS_clk_125m_pllref = PERIOD "clk_125m_ref" 8 ns HIGH 50%;
NET "*/gc_reset_async_in" TIG;
# Ignore async reset to DDR controller
NET "inst_svec_
templat
e/ddr_rst" TPTHRU = ddr_rst;
NET "inst_svec_
bas
e/ddr_rst" TPTHRU = ddr_rst;
TIMESPEC TS_ddr_rst_tig = FROM FFS THRU ddr_rst TIG;
#----------------------------------------
...
...
@@ -228,8 +228,8 @@ TIMESPEC TS_ddr_rst_tig = FROM FFS THRU ddr_rst TIG;
# Declaration of domains
NET "inst_svec_
templat
e/clk_sys_62m5" TNM_NET = sys_clk;
NET "inst_svec_
templat
e/clk_ref_125m" TNM_NET = ref_clk;
NET "inst_svec_
bas
e/clk_sys_62m5" TNM_NET = sys_clk;
NET "inst_svec_
bas
e/clk_ref_125m" TNM_NET = ref_clk;
TIMEGRP "ref_sync_ffs" = "sync_ffs" EXCEPT "ref_clk";
TIMEGRP "sys_sync_ffs" = "sync_ffs" EXCEPT "sys_clk";
...
...
hdl/syn/common/svec_
templat
e_ddr4.ucf
→
hdl/syn/common/svec_
bas
e_ddr4.ucf
View file @
46bd7e78
File moved
hdl/syn/common/svec_
templat
e_ddr5.ucf
→
hdl/syn/common/svec_
bas
e_ddr5.ucf
View file @
46bd7e78
File moved
hdl/syn/common/svec_
templat
e_ddr_common.ucf
→
hdl/syn/common/svec_
bas
e_ddr_common.ucf
View file @
46bd7e78
...
...
@@ -4,27 +4,27 @@
# These are suggested by the Xilinx-generated MCB.
# More info in the UCF file found in the "user_design/par" of the generated core.
NET "inst_svec_
templat
e/gen_with_ddr?.cmp_ddr_ctrl_bank/*/c?_pll_lock" TIG;
NET "inst_svec_
templat
e/gen_with_ddr?.cmp_ddr_ctrl_bank/*/memc?_mcb_raw_wrapper_inst/selfrefresh_mcb_mode" TIG;
NET "inst_svec_
templat
e/gen_with_ddr?.cmp_ddr_ctrl_bank/*/mcb_soft_calibration_inst/DONE_SOFTANDHARD_CAL" TIG;
#NET "inst_svec_
templat
e/gen_with_ddr?.cmp_ddr_ctrl_bank/*/mcb_soft_calibration_inst/SELFREFRESH_MCB_REQ" TIG;
NET "inst_svec_
bas
e/gen_with_ddr?.cmp_ddr_ctrl_bank/*/c?_pll_lock" TIG;
NET "inst_svec_
bas
e/gen_with_ddr?.cmp_ddr_ctrl_bank/*/memc?_mcb_raw_wrapper_inst/selfrefresh_mcb_mode" TIG;
NET "inst_svec_
bas
e/gen_with_ddr?.cmp_ddr_ctrl_bank/*/mcb_soft_calibration_inst/DONE_SOFTANDHARD_CAL" TIG;
#NET "inst_svec_
bas
e/gen_with_ddr?.cmp_ddr_ctrl_bank/*/mcb_soft_calibration_inst/SELFREFRESH_MCB_REQ" TIG;
#----------------------------------------
# Asynchronous resets
#----------------------------------------
# Ignore async reset to DDR controller
NET "inst_svec_
templat
e/ddr_rst" TPTHRU = ddr_rst;
NET "inst_svec_
bas
e/ddr_rst" TPTHRU = ddr_rst;
TIMESPEC TS_ddr_rst_tig = FROM FFS THRU ddr_rst TIG;
#----------------------------------------
# Cross-clock domain sync
#----------------------------------------
NET "inst_svec_
templat
e/clk_ddr_333m" TNM_NET = ddr_clk;
NET "inst_svec_
bas
e/clk_ddr_333m" TNM_NET = ddr_clk;
NET "inst_svec_
templat
e/gen_with_ddr?.cmp_ddr_ctrl_bank/*/memc?_infrastructure_inst/mcb_drp_clk_bufg_in" TNM_NET = ddr_clk;
NET "inst_svec_
templat
e/gen_with_ddr?.cmp_ddr_ctrl_bank/*/memc?_mcb_raw_wrapper_inst/ioi_drp_clk" TNM_NET = ddr_clk;
NET "inst_svec_
bas
e/gen_with_ddr?.cmp_ddr_ctrl_bank/*/memc?_infrastructure_inst/mcb_drp_clk_bufg_in" TNM_NET = ddr_clk;
NET "inst_svec_
bas
e/gen_with_ddr?.cmp_ddr_ctrl_bank/*/memc?_mcb_raw_wrapper_inst/ioi_drp_clk" TNM_NET = ddr_clk;
# DDR does not use any sync modules
...
...
hdl/syn/common/svec_
templat
e_gpio.ucf
→
hdl/syn/common/svec_
bas
e_gpio.ucf
View file @
46bd7e78
File moved
hdl/syn/common/svec_
templat
e_led.ucf
→
hdl/syn/common/svec_
bas
e_led.ucf
View file @
46bd7e78
File moved
hdl/syn/common/svec_
templat
e_wr.ucf
→
hdl/syn/common/svec_
bas
e_wr.ucf
View file @
46bd7e78
...
...
@@ -80,7 +80,7 @@ NET "clk_20m_vcxo_i" TNM_NET = "clk_20m_vcxo";
TIMESPEC TS_clk_20m_vcxo = PERIOD "clk_20m_vcxo" 50 ns HIGH 50%;
NET "inst_svec_
templat
e/gen_wr.cmp_xwrc_board_svec/cmp_xwrc_platform/gen_phy_spartan6.cmp_gtp/ch1_gtp_clkout_int<1>" TNM_NET = wrc_gtp_clk;
NET "inst_svec_
bas
e/gen_wr.cmp_xwrc_board_svec/cmp_xwrc_platform/gen_phy_spartan6.cmp_gtp/ch1_gtp_clkout_int<1>" TNM_NET = wrc_gtp_clk;
TIMESPEC TS_wrc_gtp_clk = PERIOD "wrc_gtp_clk" 8 ns HIGH 50%;
...
...
@@ -100,8 +100,8 @@ TIMESPEC TS_dmtd_skew = FROM "skew_limit" TO "FFS" 1.25 ns DATAPATHONLY;
# Declaration of domains
NET "inst_svec_
templat
e/gen_wr.cmp_xwrc_board_svec/clk_pll_dmtd" TNM_NET = clk_dmtd;
NET "inst_svec_
templat
e/gen_wr.cmp_xwrc_board_svec/phy8_to_wrc_rx_clk" TNM_NET = phy_clk;
NET "inst_svec_
bas
e/gen_wr.cmp_xwrc_board_svec/clk_pll_dmtd" TNM_NET = clk_dmtd;
NET "inst_svec_
bas
e/gen_wr.cmp_xwrc_board_svec/phy8_to_wrc_rx_clk" TNM_NET = phy_clk;
# Exceptions for crossings via gc_sync_ffs
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment