Skip to content

Commit 35d95a5

Browse files
committed
Merge branch 'cmoc_updates' into 'master'
cmoc on marble * Enables cmoc on Marble board and adds CI rule to synthesize a bitfile. * To differentiate between the boards, add projects/cmoc_top/marblemini/marble_features.yaml. * Add new projects/test_marble_family/marble_mid.vh middle layer that can be reused between cmoc_top.v and marble_top.v. See merge request hdl-libraries/bedrock!220
2 parents 6012219 + 81692c5 commit 35d95a5

File tree

12 files changed

+407
-487
lines changed

12 files changed

+407
-487
lines changed

.gitlab/ci/cmoc.gitlab-ci.yml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,15 @@ cmoc_test:
1212
script:
1313
- make && make checks
1414

15-
cmoc_top_marblemini:
15+
cmoc_top:
1616
before_script:
1717
- cd projects/cmoc_top/marblemini && ls /non-free
1818
stage: synthesis
1919
script:
20-
- XILINX_VIVADO=$XILINX_VIVADO PATH=$XILINX_VIVADO/bin:$PATH make HARDWARE=marblemini cmoc_top.bit
20+
- XILINX_VIVADO=$XILINX_VIVADO PATH=$XILINX_VIVADO/bin:$PATH make HARDWARE=${TARGET} cmoc_top.bit
21+
parallel:
22+
matrix:
23+
- TARGET: [marblemini, marble]
2124
artifacts:
2225
name: "$CI_JOB_NAME-$CI_COMMIT_REF_NAME"
2326
expire_in: 1 week

cmoc/cryomodule_badger.v

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ wire [23:0] rtefi_lb_addr;
3131
wire [31:0] rtefi_lb_data_out;
3232
wire [31:0] rtefi_lb_data_in;
3333

34-
34+
// TODO: Add option to let MMC set the IP address and MAC
3535
rtefi_blob #(.ip(ip), .mac(mac)) badger(
3636
// GMII Input (Rx)
3737
.rx_clk(gmii_rx_clk),

cmoc/cryomodule_test_setup.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,8 @@
33
from math import pi, sqrt, log
44
from numpy import exp as cexp
55
from numpy import ceil
6-
# https://stackoverflow.com/questions/14132789/relative-imports-for-the-billionth-time
7-
# Leaves me with only one choice ... :(
8-
# Since I don't want to modify shell variables
9-
sys.path.append(
10-
os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +
11-
"/../build-tools")
6+
7+
sys.path.append(os.path.join(os.path.dirname(__file__), "../build-tools"))
128
from read_regmap import get_map, get_reg_info
139

1410
cav_num = 0

projects/cmoc_top/marblemini/Makefile

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@ include $(TOP_DIR)/dir_list.mk
33
.PHONY: all
44
all: $(TARGET)
55

6-
HARDWARE = marblemini
7-
DSP_FLAVOR = 7
86
XILINX_TOOL := VIVADO
9-
107
APP_NAME = cmoc
118

9+
HARDWARE = marblemini
10+
1211
APP_DIR = $(TOP_DIR)/cmoc
1312
DSP_DIR = $(TOP_DIR)/dsp
1413
OSCOPE_COMMON_DIR = $(TOP_DIR)/projects/oscope/common
14+
TEST_MARBLE_FAMILY = $(TOP_DIR)/projects/test_marble_family
1515
BS_HARDWARE_DIR = $(BOARD_SUPPORT_DIR)/$(HARDWARE)
1616

1717
vpath %.v $(APP_DIR) $(RTSIM_DIR) $(DSP_DIR) $(DSP_DIR)/hosted $(BADGER_DIR)
@@ -24,19 +24,20 @@ include $(APP_DIR)/rules.mk
2424

2525
SYNTH_OPT += $(VERILOG_DEFINE_FLAGS)
2626

27-
VFLAGS_DEP += -y$(BS_HARDWARE_DIR) -y$(BOARD_SUPPORT_DIR)/marblemini -y$(FPGA_FAMILY_DIR) -y$(FPGA_FAMILY_DIR) -y$(FPGA_FAMILY_DIR)/xilinx -y$(FPGA_FAMILY_DIR)/pll -y. -y$(APP_DIR) -y$(HOMELESS_DIR) -y$(HOMELESS_DIR)/freq_demo -y$(BADGER_DIR) -y$(BADGER_DIR)/tests -y$(BADGER_DIR)/tests/kc705 -y$(SERIAL_IO_DIR) -y../../test_marble_family -y../../test_marble_family/pps_lock -y$(PERIPH_DRIVERS_DIR) -y$(PERIPH_DRIVERS_DIR)/i2cbridge -y../bmb7_cu
27+
VFLAGS_DEP += -y$(BS_HARDWARE_DIR) -y$(BOARD_SUPPORT_DIR)/marblemini -y$(FPGA_FAMILY_DIR) -y$(FPGA_FAMILY_DIR) -y$(FPGA_FAMILY_DIR)/xilinx -y$(FPGA_FAMILY_DIR)/pll -y. -y$(APP_DIR) -y$(HOMELESS_DIR) -y$(HOMELESS_DIR)/freq_demo -y$(BADGER_DIR) -y$(BADGER_DIR)/tests -y$(BADGER_DIR)/tests/kc705 -y$(SERIAL_IO_DIR) -y$(TEST_MARBLE_FAMILY) -I$(TEST_MARBLE_FAMILY) -y$(TEST_MARBLE_FAMILY)/pps_lock -y$(PERIPH_DRIVERS_DIR) -y$(PERIPH_DRIVERS_DIR)/i2cbridge -y../bmb7_cu
2828

2929
VFLAGS += $(VERILOG_DEFINE_FLAGS)
3030

31-
system_top.xdc: $(BOARD_SUPPORT_DIR)/$(HARDWARE)/Marble.xdc $(BOARD_SUPPORT_DIR)/$(HARDWARE)/pin_map.csv digilent_led_pmod.csv oscope_rules.csv
31+
system_top.xdc: $(BOARD_SUPPORT_DIR)/$(HARDWARE)/Marble.xdc $(BOARD_SUPPORT_DIR)/$(HARDWARE)/pin_map.csv $(HARDWARE)_top.csv
3232
@echo "Building for $(HARDWARE); Use make HARDWARE=marble(mini) otherwise"
3333
$(PYTHON) $(BADGER_DIR)/tests/meta-xdc.py $^ > $@
3434

35-
CLEAN += $(TARGET) $(AUTOGEN_DIR)/config_romx.v *~ system_top.xdc cmoc_top.bin cmoc_top.prm cmoc_top.bit $(APP_NAME)_regmap_long.json $(APP_NAME)_regmap.json $(RTEFI_CLEAN)
35+
CLEAN += $(TARGET) $(AUTOGEN_DIR)/config_romx.v *~ system_top.xdc cmoc_top.bin cmoc_top.prm cmoc_top.bit $(APP_NAME)_regmap_long.json $(APP_NAME)_regmap.json marble_features*.vh $(RTEFI_CLEAN)
36+
CLEAN += *.log *.jou
3637
CLEAN_DIRS += _xilinx
3738

3839
cmoc_top.bit: $(AUTOGEN_DIR)/config_romx.v
39-
cmoc_top.v: $(AUTOGEN_DIR)/config_romx.v rtefi_blob.v construct_tx_table.v cryomodule_auto
40+
cmoc_top.v: marble_features_defs.vh marble_features_params.vh $(AUTOGEN_DIR)/config_romx.v rtefi_blob.v construct_tx_table.v cryomodule_auto
4041

4142
download: cmoc_top.bit
4243
openocd -f $(BOARD_SUPPORT_DIR)/$(HARDWARE)/marble.cfg -c "transport select jtag; init; xc7_program xc7.tap; pld load 0 $^; exit"
@@ -50,6 +51,10 @@ $(APP_NAME)_regmap.json: $(AUTOGEN_DIR)/regmap_cryomodule.json $(OSCOPE_COMMON_D
5051
$(PYTHON) $(OSCOPE_COMMON_DIR)/merge_json.py -o $(APP_NAME)_regmap_long.json -i $(filter %.json, $^)
5152
$(PYTHON) $(OSCOPE_COMMON_DIR)/shorten_names.py -o $@ -i $(APP_NAME)_regmap_long.json
5253

54+
# actual file output is marble_features_(defs/params).vh
55+
marble_features_defs.vh marble_features_params.vh: $(BUILD_DIR)/gen_features.py $(TEST_MARBLE_FAMILY)/marble_features.yaml
56+
$(PYTHON) $< -i $(filter %.yaml, $^) -c $(HARDWARE) --split
57+
5358
include $(BUILD_DIR)/bottom_rules.mk
5459

5560
ifneq (,$(findstring bit,$(MAKECMDGOALS)))

0 commit comments

Comments
 (0)