From 0fa5ab5869ee6dac64d807cfd0a8399f8a47d7dc Mon Sep 17 00:00:00 2001
From: Fiscarelli
Date: Wed, 16 Dec 2020 16:26:56 -0500
Subject: [PATCH] CEP Release v3.0
---
.DS_Store | Bin 0 -> 6148 bytes
README.md | 47 +-
cep_architecture.jpg | Bin 102286 -> 0 bytes
cosim/README.md | 14 -
cosim/bareMetalTests/Makefile | 3 +
cosim/bareMetalTests/srotTest/Makefile | 32 +
cosim/bareMetalTests/srotTest/c_dispatch.cc | 122 ++
cosim/bareMetalTests/srotTest/c_dispatch.h | 23 +
cosim/bareMetalTests/srotTest/c_module.cc | 84 ++
cosim/bareMetalTests/srotTest/c_module.h | 18 +
.../bareMetalTests/srotTest/riscv_wrapper.cc | 65 +
cosim/bfmTests/Makefile | 2 +
cosim/bfmTests/srotTest/Makefile | 31 +
cosim/bfmTests/srotTest/c_dispatch.cc | 107 ++
cosim/bfmTests/srotTest/c_dispatch.h | 23 +
cosim/bfmTests/srotTest/c_module.cc | 88 ++
cosim/bfmTests/srotTest/c_module.h | 18 +
cosim/cep_buildChips.make | 10 +-
cosim/drivers/cep_tests/CEP.h | 44 +-
cosim/drivers/cep_tests/cep_aes.cc | 74 +-
cosim/drivers/cep_tests/cep_apis.cc | 1 +
cosim/drivers/cep_tests/cep_apis.h | 78 +-
cosim/drivers/cep_tests/cep_riscv.cc | 220 ++-
cosim/drivers/cep_tests/cep_riscv.h | 14 +
cosim/drivers/cep_tests/cepregression.cc | 31 +-
cosim/drivers/cep_tests/cepregression.h | 4 +
cosim/drivers/diag/cepGpioTest.cc | 114 ++
cosim/drivers/diag/cepGpioTest.h | 40 +
cosim/drivers/diag/cepSpiTest.cc | 109 ++
cosim/drivers/diag/cepSpiTest.h | 40 +
cosim/drivers/diag/cepSrotTest.cc | 299 ++++
cosim/drivers/diag/cepSrotTest.h | 93 ++
cosim/drivers/diag/cepUartTest.cc | 164 +++
cosim/drivers/diag/cepUartTest.h | 42 +
cosim/drivers/diag/random48.cc | 40 +-
cosim/drivers/diag/random48.h | 8 +-
cosim/drivers/linux/cep_diag.cc | 28 +
cosim/drivers/linux/cep_diag.h | 2 +
cosim/dvt/aes_capture.incl | 20 +-
cosim/dvt/behav_models/cep_driver.v | 82 +-
cosim/dvt/behav_models/tl_master_beh.v | 87 +-
cosim/dvt/cep_adrMap.incl | 123 +-
cosim/dvt/cep_hierMap.incl | 5 +
cosim/dvt/cep_tb.v | 48 +-
cosim/dvt/driver_common.incl | 24 +
cosim/dvt/v2c_cmds.incl | 14 +-
cosim/isaTests/Makefile | 24 +-
cosim/share/access.cc | 29 +
cosim/share/access.h | 2 +
cosim/share/portable_io.h | 12 +
cosim/share/shIpc.cc | 16 +
cosim/share/shIpc.h | 5 +-
cosim/simDiag/simPio.cc | 2 +
cosim/simDiag/simPio.h | 2 +
.../CEP_SecEvalTargets.pdf | Bin
cep_logo.jpg => doc/cep_logo.jpg | Bin
cep_logo.txt => doc/cep_logo.txt | 0
doc/cep_v3.0_architecture.jpg | Bin 0 -> 301316 bytes
doc/related_logos.jpg | Bin 0 -> 24003 bytes
doc/version.jpg | Bin 0 -> 8664 bytes
get_external_dependencies.sh | 6 +-
hdl_cores/aes/aes_192_mock_tss.sv | 251 ++++
hdl_cores/freedom/Makefile.vc707 | 115 +-
hdl_cores/freedom/bootrom/sdboot/sd.c | 2 +-
hdl_cores/freedom/common.mk | 12 +-
hdl_cores/freedom/fpga-shells/.gitignore | 1 +
hdl_cores/freedom/fpga-shells/README.md | 105 ++
hdl_cores/freedom/fpga-shells/build.wake | 14 +
.../microsemi/common/tcl/libero.tcl | 253 ++++
.../constraints/PF_EvalKit_DDR3_fp.pdc | 34 +
.../constraints/PF_EvalKit_DDR3_io.pdc | 319 ++++
.../constraints/PF_EvalKit_PCIe_fp.pdc | 29 +
.../constraints/PF_EvalKit_PCIe_io.pdc | 133 ++
.../constraints/PF_EvalKit_base_io.pdc | 199 +++
.../constraints/PF_EvalKit_fp.pdc | 3 +
.../constraints/chiplink_io.pdc | 432 ++++++
.../constraints/clock_groups.sdc | 5 +
.../vera/constraints/false_paths.sdc | 41 +
.../microsemi/vera/constraints/floor_plan.pdc | 4 +
.../vera/constraints/pin_constraints.pdc | 11 +
.../fpga-shells/microsemi/vera/tcl/board.tcl | 12 +
.../src/main/scala/clocks/Bundles.scala | 17 +
.../src/main/scala/clocks/ClockGroup.scala | 33 +
.../src/main/scala/clocks/Nodes.scala | 70 +
.../src/main/scala/clocks/PLLFactory.scala | 98 ++
.../src/main/scala/clocks/Parameters.scala | 77 +
.../src/main/scala/clocks/ResetWrangler.scala | 43 +
.../MicrosemiPolarFireDDR3.scala | 165 +++
.../MicrosemiPolarFireDDR3Periphery.scala | 37 +
.../MicrosemiPolarFireDDR4.scala | 166 +++
.../MicrosemiPolarFireDDR4Periphery.scala | 37 +
.../PolarFireEvalKitPCIeX4.scala | 75 +
.../PolarFireEvalKitPCIeX4Periphery.scala | 35 +
.../devices/xilinx/ethernet/ethernet.scala | 125 ++
.../main/scala/devices/xilinx/xdma/XDMA.scala | 52 +
.../scala/devices/xilinx/xdma/package.scala | 10 +
.../xilinxarty100tmig/XilinxArty100TMIG.scala | 171 +++
.../xilinxvc707mig/XilinxVC707MIG.scala | 170 +++
.../XilinxVC707MIGPeriphery.scala | 35 +
.../xilinxvc707pciex1/XilinxVC707PCIeX1.scala | 76 +
.../XilinxVC707PCIeX1Periphery.scala | 32 +
.../xilinxvcu118mig/XilinxVCU118MIG.scala | 163 +++
.../XilinxVCU118MIGPeriphery.scala | 35 +
.../corejtagdebug/corejtagdebug.scala | 71 +
.../main/scala/ip/microsemi/polarfire.scala | 40 +
.../polarfire_ccc/PolarFireCCC.scala | 81 +
.../PolarFireClockDivider.scala | 40 +
.../polarfire_ddr3/PolarFireDDR3.scala | 129 ++
.../polarfire_ddr4/PolarFireDDR4.scala | 132 ++
.../polarfire_dll/PolarFireDLL.scala | 46 +
.../PolarFireGlitchlessMux.scala | 41 +
.../PolarFireInitMonitor.scala | 32 +
.../PolarFireOscillator.scala | 37 +
.../PolarFirePCIeRootPort.scala | 608 ++++++++
.../polarfire_reset/PolarFireReset.scala | 44 +
.../polarfire_tx_pll/PolarFireTxPLL.scala | 45 +
.../PolarFireTransceiverRefClk.scala | 46 +
.../src/main/scala/ip/xilinx/Unisim.scala | 370 +++++
.../src/main/scala/ip/xilinx/Xilinx.scala | 490 +++++++
.../ip/xilinx/arty100tmig/arty100tmig.scala | 263 ++++
.../ip/xilinx/ibufds_gte2/ibufds_gte2.scala | 18 +
.../vc707axi_to_pcie_x1.scala | 491 +++++++
.../scala/ip/xilinx/vc707mig/vc707mig.scala | 534 +++++++
.../scala/ip/xilinx/vcu118mig/vcu118mig.scala | 179 +++
.../src/main/scala/ip/xilinx/xdma/xdma.scala | 469 ++++++
.../ip/xilinx/xxv_ethernet/nfmac10g.scala | 52 +
.../ip/xilinx/xxv_ethernet/xxv_ethernet.scala | 177 +++
.../src/main/scala/shell/ButtonOverlay.scala | 28 +
.../main/scala/shell/CTSResetOverlay.scala | 23 +
.../main/scala/shell/ChipLinkOverlay.scala | 58 +
.../src/main/scala/shell/ClockOverlay.scala | 81 +
.../src/main/scala/shell/DDROverlay.scala | 27 +
.../src/main/scala/shell/Ethernet.scala | 51 +
.../src/main/scala/shell/GPIOOverlay.scala | 35 +
.../main/scala/shell/GPIOPMODOverlay.scala | 45 +
.../src/main/scala/shell/I2COverlay.scala | 38 +
.../src/main/scala/shell/IOShell.scala | 159 ++
.../scala/shell/JTAGDebugBScanOverlay.scala | 31 +
.../main/scala/shell/JTAGDebugOverlay.scala | 50 +
.../src/main/scala/shell/LEDOverlay.scala | 30 +
.../src/main/scala/shell/PCIeOverlay.scala | 31 +
.../src/main/scala/shell/PWMOverlay.scala | 36 +
.../src/main/scala/shell/PinOverlay.scala | 38 +
.../src/main/scala/shell/SDIOOverlay.scala | 70 +
.../main/scala/shell/SPIFlashOverlay.scala | 37 +
.../src/main/scala/shell/Shell.scala | 80 +
.../src/main/scala/shell/SwitchOverlay.scala | 25 +
.../main/scala/shell/TracePMODOverlay.scala | 30 +
.../src/main/scala/shell/UARTOverlay.scala | 46 +
.../src/main/scala/shell/Util.scala | 53 +
.../main/scala/shell/cJTAGDebugOverlay.scala | 57 +
.../shell/microsemi/ChipLinkOverlay.scala | 84 ++
.../scala/shell/microsemi/ClockOverlay.scala | 23 +
.../scala/shell/microsemi/LEDOverlay.scala | 19 +
.../microsemi/PolarFireEvalKitShell.scala | 661 +++++++++
.../shell/microsemi/PolarFireShell.scala | 42 +
.../scala/shell/microsemi/VeraShell.scala | 251 ++++
.../src/main/scala/shell/package.scala | 10 +
.../scala/shell/xilinx/Arty100TShell.scala | 369 +++++
.../main/scala/shell/xilinx/ArtyShell.scala | 245 ++++
.../scala/shell/xilinx/ButtonOverlay.scala | 34 +
.../scala/shell/xilinx/ChipLinkOverlay.scala | 73 +
.../scala/shell/xilinx/ClockOverlay.scala | 41 +
.../shell/xilinx/GPIOPMODXilinxOverlay.scala | 13 +
.../shell/xilinx/GPIOXilinxOverlay.scala | 20 +
.../main/scala/shell/xilinx/I2COverlay.scala | 21 +
.../shell/xilinx/JTAGDebugBScanOverlay.scala | 29 +
.../scala/shell/xilinx/JTAGDebugOverlay.scala | 21 +
.../main/scala/shell/xilinx/LEDOverlay.scala | 29 +
.../main/scala/shell/xilinx/PWMOverlay.scala | 19 +
.../shell/xilinx/PeripheralsVC707Shell.scala | 163 +++
.../scala/shell/xilinx/PinXilinxOverlay.scala | 13 +
.../main/scala/shell/xilinx/SDIOOverlay.scala | 13 +
.../shell/xilinx/SPIFlashXilinxOverlay.scala | 23 +
.../scala/shell/xilinx/SwitchOverlay.scala | 34 +
.../scala/shell/xilinx/TracePMODOverlay.scala | 29 +
.../main/scala/shell/xilinx/UARTOverlay.scala | 25 +
.../scala/shell/xilinx/UltraScaleShell.scala | 135 ++
.../scala/shell/xilinx/VC707NewShell.scala | 337 +++++
.../main/scala/shell/xilinx/VC707Shell.scala | 613 ++++++++
.../scala/shell/xilinx/VCU118NewShell.scala | 452 ++++++
.../main/scala/shell/xilinx/VCU118Shell.scala | 276 ++++
.../main/scala/shell/xilinx/XilinxShell.scala | 83 ++
.../shell/xilinx/cJTAGDebugOverlay.scala | 13 +
.../fpga-shells/vsrc/nfmac10g/axis2xgmii.v | 499 +++++++
.../fpga-shells/vsrc/nfmac10g/nfmac10g.v | 195 +++
.../fpga-shells/vsrc/nfmac10g/padding_ctrl.v | 288 ++++
.../fpga-shells/vsrc/nfmac10g/rst_mod.v | 103 ++
.../freedom/fpga-shells/vsrc/nfmac10g/rx.v | 99 ++
.../freedom/fpga-shells/vsrc/nfmac10g/tx.v | 139 ++
.../fpga-shells/vsrc/nfmac10g/xgmii2axis.v | 448 ++++++
.../vsrc/nfmac10g/xgmii_includes.vh | 494 +++++++
.../freedom/fpga-shells/wit-manifest.json | 32 +
hdl_cores/freedom/fpga-shells/xilinx/Makefile | 42 +
.../xilinx/arty/constraints/arty-config.xdc | 5 +
.../xilinx/arty/constraints/arty-master.xdc | 240 +++
.../fpga-shells/xilinx/arty/tcl/board.tcl | 5 +
.../fpga-shells/xilinx/arty/tcl/ip.tcl | 44 +
.../arty_a7_100/constraints/arty-config.xdc | 5 +
.../arty_a7_100/constraints/arty-master.xdc | 240 +++
.../xilinx/arty_a7_100/tcl/board.tcl | 5 +
.../fpga-shells/xilinx/arty_a7_100/tcl/ip.tcl | 43 +
.../xilinx/common/tcl/bitstream.tcl | 10 +
.../fpga-shells/xilinx/common/tcl/boards.tcl | 9 +
.../fpga-shells/xilinx/common/tcl/init.tcl | 48 +
.../fpga-shells/xilinx/common/tcl/opt.tcl | 7 +
.../fpga-shells/xilinx/common/tcl/place.tcl | 13 +
.../xilinx/common/tcl/prologue.tcl | 138 ++
.../fpga-shells/xilinx/common/tcl/report.tcl | 44 +
.../fpga-shells/xilinx/common/tcl/route.tcl | 10 +
.../fpga-shells/xilinx/common/tcl/synth.tcl | 25 +
.../fpga-shells/xilinx/common/tcl/util.tcl | 24 +
.../fpga-shells/xilinx/common/tcl/vivado.tcl | 43 +
.../xilinx/common/tcl/write_cfgmem.tcl | 26 +
.../xilinx/common/vsrc/PowerOnResetFPGAOnly.v | 16 +
.../xilinx/vc707/constraints/vc707-master.xdc | 6 +
.../fpga-shells/xilinx/vc707/tcl/board.tcl | 4 +
.../fpga-shells/xilinx/vc707/tcl/clocks.tcl | 60 +
.../fpga-shells/xilinx/vc707/tcl/ios.tcl | 68 +
.../fpga-shells/xilinx/vc707/vsrc/sdio.v | 58 +
.../xilinx/vc707/vsrc/vc707reset.v | 78 +
.../vcu118/constraints/vcu118-master.xdc | 12 +
.../fpga-shells/xilinx/vcu118/tcl/board.tcl | 6 +
.../fpga-shells/xilinx/vcu118/vsrc/sdio.v | 59 +
.../xilinx/vcu118/vsrc/vcu118reset.v | 78 +
.../mitll-blocks/src/main/scala/aes.scala | 395 +++--
.../src/main/scala/cep_addresses.scala | 92 +-
.../src/main/scala/cep_registers.scala | 4 +-
.../mitll-blocks/src/main/scala/srot.scala | 280 ++++
.../main/scala/unleashed/DevKitConfigs.scala | 18 +-
.../scala/unleashed/DevKitFPGADesign.scala | 2 +
hdl_cores/gps/gps_clkgen.v | 2 +
hdl_cores/llki/llki_pkg.sv | 258 ++++
hdl_cores/llki/llki_pp_wrapper.sv | 466 ++++++
hdl_cores/llki/srot_wrapper.sv | 1304 +++++++++++++++++
hdl_cores/llki/tlul_err.sv | 113 ++
hdl_cores/llki/top_pkg.sv | 42 +
licenseLog.txt | 7 +
.../llki_supports/llki_discrete.sv | 2 +-
unit_simulation/llki_supports/llki_rom.sv | 1 +
unit_simulation/llki_supports/llki_struct.h | 2 +-
unit_simulation/llki_supports/llki_tl.sv | 2 +-
unit_simulation/llki_supports/tlul_pkg.sv | 1 +
243 files changed, 22463 insertions(+), 433 deletions(-)
create mode 100644 .DS_Store
delete mode 100644 cep_architecture.jpg
create mode 100644 cosim/bareMetalTests/srotTest/Makefile
create mode 100644 cosim/bareMetalTests/srotTest/c_dispatch.cc
create mode 100644 cosim/bareMetalTests/srotTest/c_dispatch.h
create mode 100644 cosim/bareMetalTests/srotTest/c_module.cc
create mode 100644 cosim/bareMetalTests/srotTest/c_module.h
create mode 100644 cosim/bareMetalTests/srotTest/riscv_wrapper.cc
create mode 100644 cosim/bfmTests/srotTest/Makefile
create mode 100644 cosim/bfmTests/srotTest/c_dispatch.cc
create mode 100644 cosim/bfmTests/srotTest/c_dispatch.h
create mode 100644 cosim/bfmTests/srotTest/c_module.cc
create mode 100644 cosim/bfmTests/srotTest/c_module.h
create mode 100644 cosim/drivers/diag/cepGpioTest.cc
create mode 100644 cosim/drivers/diag/cepGpioTest.h
create mode 100644 cosim/drivers/diag/cepSpiTest.cc
create mode 100644 cosim/drivers/diag/cepSpiTest.h
create mode 100644 cosim/drivers/diag/cepSrotTest.cc
create mode 100644 cosim/drivers/diag/cepSrotTest.h
create mode 100644 cosim/drivers/diag/cepUartTest.cc
create mode 100644 cosim/drivers/diag/cepUartTest.h
rename CEP_SecEvalTargets.pdf => doc/CEP_SecEvalTargets.pdf (100%)
rename cep_logo.jpg => doc/cep_logo.jpg (100%)
rename cep_logo.txt => doc/cep_logo.txt (100%)
create mode 100644 doc/cep_v3.0_architecture.jpg
create mode 100644 doc/related_logos.jpg
create mode 100644 doc/version.jpg
create mode 100644 hdl_cores/aes/aes_192_mock_tss.sv
create mode 100644 hdl_cores/freedom/fpga-shells/.gitignore
create mode 100644 hdl_cores/freedom/fpga-shells/README.md
create mode 100644 hdl_cores/freedom/fpga-shells/build.wake
create mode 100644 hdl_cores/freedom/fpga-shells/microsemi/common/tcl/libero.tcl
create mode 100644 hdl_cores/freedom/fpga-shells/microsemi/polarfireevalkit/constraints/PF_EvalKit_DDR3_fp.pdc
create mode 100644 hdl_cores/freedom/fpga-shells/microsemi/polarfireevalkit/constraints/PF_EvalKit_DDR3_io.pdc
create mode 100644 hdl_cores/freedom/fpga-shells/microsemi/polarfireevalkit/constraints/PF_EvalKit_PCIe_fp.pdc
create mode 100644 hdl_cores/freedom/fpga-shells/microsemi/polarfireevalkit/constraints/PF_EvalKit_PCIe_io.pdc
create mode 100644 hdl_cores/freedom/fpga-shells/microsemi/polarfireevalkit/constraints/PF_EvalKit_base_io.pdc
create mode 100644 hdl_cores/freedom/fpga-shells/microsemi/polarfireevalkit/constraints/PF_EvalKit_fp.pdc
create mode 100644 hdl_cores/freedom/fpga-shells/microsemi/polarfireevalkit/constraints/chiplink_io.pdc
create mode 100644 hdl_cores/freedom/fpga-shells/microsemi/polarfireevalkit/constraints/clock_groups.sdc
create mode 100644 hdl_cores/freedom/fpga-shells/microsemi/vera/constraints/false_paths.sdc
create mode 100644 hdl_cores/freedom/fpga-shells/microsemi/vera/constraints/floor_plan.pdc
create mode 100644 hdl_cores/freedom/fpga-shells/microsemi/vera/constraints/pin_constraints.pdc
create mode 100644 hdl_cores/freedom/fpga-shells/microsemi/vera/tcl/board.tcl
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/clocks/Bundles.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/clocks/ClockGroup.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/clocks/Nodes.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/clocks/PLLFactory.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/clocks/Parameters.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/clocks/ResetWrangler.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/devices/microsemi/polarfire_ddr3/MicrosemiPolarFireDDR3.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/devices/microsemi/polarfire_ddr3/MicrosemiPolarFireDDR3Periphery.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/devices/microsemi/polarfire_ddr4/MicrosemiPolarFireDDR4.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/devices/microsemi/polarfire_ddr4/MicrosemiPolarFireDDR4Periphery.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/devices/microsemi/polarfire_pcie/PolarFireEvalKitPCIeX4.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/devices/microsemi/polarfire_pcie/PolarFireEvalKitPCIeX4Periphery.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/devices/xilinx/ethernet/ethernet.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/devices/xilinx/xdma/XDMA.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/devices/xilinx/xdma/package.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/devices/xilinx/xilinxarty100tmig/XilinxArty100TMIG.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/devices/xilinx/xilinxvc707mig/XilinxVC707MIG.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/devices/xilinx/xilinxvc707mig/XilinxVC707MIGPeriphery.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/devices/xilinx/xilinxvc707pciex1/XilinxVC707PCIeX1.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/devices/xilinx/xilinxvc707pciex1/XilinxVC707PCIeX1Periphery.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/devices/xilinx/xilinxvcu118mig/XilinxVCU118MIG.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/devices/xilinx/xilinxvcu118mig/XilinxVCU118MIGPeriphery.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/ip/microsemi/corejtagdebug/corejtagdebug.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/ip/microsemi/polarfire.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/ip/microsemi/polarfire_ccc/PolarFireCCC.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/ip/microsemi/polarfire_clock_divider/PolarFireClockDivider.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/ip/microsemi/polarfire_ddr3/PolarFireDDR3.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/ip/microsemi/polarfire_ddr4/PolarFireDDR4.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/ip/microsemi/polarfire_dll/PolarFireDLL.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/ip/microsemi/polarfire_glitchless_mux/PolarFireGlitchlessMux.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/ip/microsemi/polarfire_init_monitor/PolarFireInitMonitor.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/ip/microsemi/polarfire_oscillator/PolarFireOscillator.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/ip/microsemi/polarfire_pcie_rootport/PolarFirePCIeRootPort.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/ip/microsemi/polarfire_reset/PolarFireReset.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/ip/microsemi/polarfire_tx_pll/PolarFireTxPLL.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/ip/microsemi/polarfire_xcvr_refclk/PolarFireTransceiverRefClk.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/ip/xilinx/Unisim.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/ip/xilinx/Xilinx.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/ip/xilinx/arty100tmig/arty100tmig.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/ip/xilinx/ibufds_gte2/ibufds_gte2.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/ip/xilinx/vc707axi_to_pcie_x1/vc707axi_to_pcie_x1.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/ip/xilinx/vc707mig/vc707mig.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/ip/xilinx/vcu118mig/vcu118mig.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/ip/xilinx/xdma/xdma.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/ip/xilinx/xxv_ethernet/nfmac10g.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/ip/xilinx/xxv_ethernet/xxv_ethernet.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/ButtonOverlay.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/CTSResetOverlay.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/ChipLinkOverlay.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/ClockOverlay.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/DDROverlay.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/Ethernet.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/GPIOOverlay.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/GPIOPMODOverlay.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/I2COverlay.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/IOShell.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/JTAGDebugBScanOverlay.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/JTAGDebugOverlay.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/LEDOverlay.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/PCIeOverlay.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/PWMOverlay.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/PinOverlay.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/SDIOOverlay.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/SPIFlashOverlay.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/Shell.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/SwitchOverlay.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/TracePMODOverlay.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/UARTOverlay.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/Util.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/cJTAGDebugOverlay.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/microsemi/ChipLinkOverlay.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/microsemi/ClockOverlay.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/microsemi/LEDOverlay.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/microsemi/PolarFireEvalKitShell.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/microsemi/PolarFireShell.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/microsemi/VeraShell.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/package.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/xilinx/Arty100TShell.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/xilinx/ArtyShell.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/xilinx/ButtonOverlay.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/xilinx/ChipLinkOverlay.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/xilinx/ClockOverlay.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/xilinx/GPIOPMODXilinxOverlay.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/xilinx/GPIOXilinxOverlay.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/xilinx/I2COverlay.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/xilinx/JTAGDebugBScanOverlay.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/xilinx/JTAGDebugOverlay.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/xilinx/LEDOverlay.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/xilinx/PWMOverlay.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/xilinx/PeripheralsVC707Shell.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/xilinx/PinXilinxOverlay.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/xilinx/SDIOOverlay.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/xilinx/SPIFlashXilinxOverlay.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/xilinx/SwitchOverlay.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/xilinx/TracePMODOverlay.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/xilinx/UARTOverlay.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/xilinx/UltraScaleShell.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/xilinx/VC707NewShell.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/xilinx/VC707Shell.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/xilinx/VCU118NewShell.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/xilinx/VCU118Shell.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/xilinx/XilinxShell.scala
create mode 100644 hdl_cores/freedom/fpga-shells/src/main/scala/shell/xilinx/cJTAGDebugOverlay.scala
create mode 100644 hdl_cores/freedom/fpga-shells/vsrc/nfmac10g/axis2xgmii.v
create mode 100644 hdl_cores/freedom/fpga-shells/vsrc/nfmac10g/nfmac10g.v
create mode 100644 hdl_cores/freedom/fpga-shells/vsrc/nfmac10g/padding_ctrl.v
create mode 100644 hdl_cores/freedom/fpga-shells/vsrc/nfmac10g/rst_mod.v
create mode 100644 hdl_cores/freedom/fpga-shells/vsrc/nfmac10g/rx.v
create mode 100644 hdl_cores/freedom/fpga-shells/vsrc/nfmac10g/tx.v
create mode 100644 hdl_cores/freedom/fpga-shells/vsrc/nfmac10g/xgmii2axis.v
create mode 100644 hdl_cores/freedom/fpga-shells/vsrc/nfmac10g/xgmii_includes.vh
create mode 100644 hdl_cores/freedom/fpga-shells/wit-manifest.json
create mode 100644 hdl_cores/freedom/fpga-shells/xilinx/Makefile
create mode 100644 hdl_cores/freedom/fpga-shells/xilinx/arty/constraints/arty-config.xdc
create mode 100644 hdl_cores/freedom/fpga-shells/xilinx/arty/constraints/arty-master.xdc
create mode 100644 hdl_cores/freedom/fpga-shells/xilinx/arty/tcl/board.tcl
create mode 100644 hdl_cores/freedom/fpga-shells/xilinx/arty/tcl/ip.tcl
create mode 100644 hdl_cores/freedom/fpga-shells/xilinx/arty_a7_100/constraints/arty-config.xdc
create mode 100644 hdl_cores/freedom/fpga-shells/xilinx/arty_a7_100/constraints/arty-master.xdc
create mode 100644 hdl_cores/freedom/fpga-shells/xilinx/arty_a7_100/tcl/board.tcl
create mode 100644 hdl_cores/freedom/fpga-shells/xilinx/arty_a7_100/tcl/ip.tcl
create mode 100644 hdl_cores/freedom/fpga-shells/xilinx/common/tcl/bitstream.tcl
create mode 100644 hdl_cores/freedom/fpga-shells/xilinx/common/tcl/boards.tcl
create mode 100644 hdl_cores/freedom/fpga-shells/xilinx/common/tcl/init.tcl
create mode 100644 hdl_cores/freedom/fpga-shells/xilinx/common/tcl/opt.tcl
create mode 100644 hdl_cores/freedom/fpga-shells/xilinx/common/tcl/place.tcl
create mode 100644 hdl_cores/freedom/fpga-shells/xilinx/common/tcl/prologue.tcl
create mode 100644 hdl_cores/freedom/fpga-shells/xilinx/common/tcl/report.tcl
create mode 100644 hdl_cores/freedom/fpga-shells/xilinx/common/tcl/route.tcl
create mode 100644 hdl_cores/freedom/fpga-shells/xilinx/common/tcl/synth.tcl
create mode 100644 hdl_cores/freedom/fpga-shells/xilinx/common/tcl/util.tcl
create mode 100644 hdl_cores/freedom/fpga-shells/xilinx/common/tcl/vivado.tcl
create mode 100644 hdl_cores/freedom/fpga-shells/xilinx/common/tcl/write_cfgmem.tcl
create mode 100644 hdl_cores/freedom/fpga-shells/xilinx/common/vsrc/PowerOnResetFPGAOnly.v
create mode 100644 hdl_cores/freedom/fpga-shells/xilinx/vc707/constraints/vc707-master.xdc
create mode 100644 hdl_cores/freedom/fpga-shells/xilinx/vc707/tcl/board.tcl
create mode 100644 hdl_cores/freedom/fpga-shells/xilinx/vc707/tcl/clocks.tcl
create mode 100644 hdl_cores/freedom/fpga-shells/xilinx/vc707/tcl/ios.tcl
create mode 100644 hdl_cores/freedom/fpga-shells/xilinx/vc707/vsrc/sdio.v
create mode 100644 hdl_cores/freedom/fpga-shells/xilinx/vc707/vsrc/vc707reset.v
create mode 100644 hdl_cores/freedom/fpga-shells/xilinx/vcu118/constraints/vcu118-master.xdc
create mode 100644 hdl_cores/freedom/fpga-shells/xilinx/vcu118/tcl/board.tcl
create mode 100644 hdl_cores/freedom/fpga-shells/xilinx/vcu118/vsrc/sdio.v
create mode 100644 hdl_cores/freedom/fpga-shells/xilinx/vcu118/vsrc/vcu118reset.v
create mode 100644 hdl_cores/freedom/mitll-blocks/src/main/scala/srot.scala
create mode 100644 hdl_cores/llki/llki_pkg.sv
create mode 100644 hdl_cores/llki/llki_pp_wrapper.sv
create mode 100644 hdl_cores/llki/srot_wrapper.sv
create mode 100644 hdl_cores/llki/tlul_err.sv
create mode 100644 hdl_cores/llki/top_pkg.sv
diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..25cb17904a97682fac1b86fd5e4a22874701747c
GIT binary patch
literal 6148
zcmeHKO-sW-5PfSa)QTux6i>N`o`ix2Pnt?Sdh+7U+NRh-YKrv(q=))9YGxkh|Z
zJ838V!9=8Ycm=!ye^CK>cFWko1$wy7KEJ9v8fDk|Nu$w(r?`4i?a5C9$pPigga1sG2+1I$ZZ}*-xis6!4z1Pr>hJN|sYk{Z;C5jXhhevS`rHUIDLw
zSKvzlc|Qakf}zFKpni35(w_jtGTqvEtlyl(Kpe!-Vrq~cnlhM+cP
-
+
+
+
+
- v2.71
-
Copyright 2020 Massachusetts Institute of Technology
+
+
+
+
+The Common Evaluation Platform (CEP) is intended as a surrogate System on a Chip (SoC) that provides users an open-source evaluation platform for the evaluation of custom tools and techniques. An extensive verification environment provided to ensure the underlying functionality is maintained even after modification.
-
+The Logic Locking Key Interface (LLKI) has been provided as a representative means of distributing key / configuration material to LLKI-enabled cores.
-The Common Evaluation Platform (CEP) is intended as a surrogate System on a Chip (SoC) allowing users to test a variety of tools and techniques. Test vectors are provided to ensure the underlying functionality is maintained even after modification.
+For CEP v3.0, the Surrogate Root of Trust (SRoT) and LLKI-enabled AES-192 core has been added. Example test vectors have been with additional LLKI information being available in the comments of files located in ./hdl_cores/llki.
-
+
-Additional information on the objectives of the CEP may be found in [./CEP_SecEvalTargets.pdf](CEP_SecEvalTargets.pdf).
+Additional information on the objectives of the CEP may be found in [./doc/CEP_SecEvalTargets.pdf](CEP_SecEvalTargets.pdf).
The CEP is based on the SiFive U500 Platform which leverages the UCB Rocket Chip. Much of the design is described in Chisel (https://github.com/freechipsproject/chisel3), a domain specific extension to Scala tailored towards constructing hardware. The output of the Chisel generators is synthesizable verilog.
@@ -82,6 +88,8 @@ The RISC-V source code resides in /software/riscv-gnu-toolchain
Begin by installing the dependencies by executing the following:
`sudo apt install autoconf automake autotools-dev curl python3 libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev`
+Now, build the toolchain.
+
Ensure you have write permissions to the directory pointed to by $RISCV and that the current shell has NOT sourced the Xilinx Vivado environment script:
$ cd /software/riscv-gnu-toolchain
@@ -138,7 +146,10 @@ Install the required dependencies by running the following command:
|-- generated_dsp_code/ - Placeholder for the generated DSP code that cannot be
| directly included in the CEP repository due to licensing
| restrictions.
- |-- software/
+ |
+ |-- opentitan/ - Copy of the OpenTitan repository, some components are used by the LLKI.
+ |
+ |-- software/
|
|-- freedom-u-sdk/ - Directory containing an export of the https://github.com/
| mcd500/freedom-u-sdk directory, which is a fork of the
@@ -274,7 +285,7 @@ You should see the following logo/text appear:
./+++++++++++oo+++: +oo++o++++o+o+oo+oo.- `s+++s`-
.--:---:-:-::-::` -::::::::::::::::::. :::::.
- Common Evaluation Platform v2.71
+ Common Evaluation Platform v3.0
Copyright (C) 2020 Massachusetts Institute of Technology
Built upon the SiFive Freedom U500 Platform using
@@ -297,7 +308,7 @@ At the command prompt, you can run the CEP diagnostics by commanding `cep_diag`.
A partial output should be similar to:
```sh
-*** CEP Tag=CEPTest CEP HW VERSION = v2.71 was built on Sep 17 2020 12:01:26 ***
+*** CEP Tag=CEPTest CEP HW VERSION = v3.00 was built on Sep 17 2020 12:01:26 ***
CEP FPGA Physical=0x70000000 -> Virtual=0x00000020004fa000
gSkipInit=0/0
gverbose=0/0
@@ -428,7 +439,7 @@ v2.6 - (18 September 2020)
https://github.com/sifive/sifive-blocks/tree/12bdbe50636b6c57c8dc997e483787fdb5ee540b - Dec 17, 2019
https://github.com/mcd500/freedom-u-sdk/tree/29fe529f8dd8e1974fe1743184b3e13ebb2a21dc - Apr 12, 2019
* riscv-tools (formerly under rocket-chip) now located in ./software/riscv-gnu-toolchain
-7* KNOWN ISSUES:
+* KNOWN ISSUES:
- The iCacheCoherency passes when running bare-metal simulation, but fails when running on the VC-707. There is an issue with
the iCache protocol that the tight-looped iCache coherency test results in one or more of the Rocket Cores (there are 4 in
the CEP) L1 iCache not getting the value associated with the most recent write to instruction memory.
@@ -455,8 +466,11 @@ v2.7 - (28 October 2020)
- isaTests/rv64ud-p-ldst
v2.71 - (2 November 2020)
-* Corrected README.md issues
+* Corrected README.md issue
+v3.0 - (18 December 2020)
+* Initial LLKI release with Surrogate Root of Trust
+* AES core replaced with LLKI-enabled AES core, all other cores remain unchanged
## Licensing
The CEP been developed with a goal of using components with non-viral, open source licensing whenever possible. When not feasible (such as Linux), pointers to reference repositories are given using the [get_external_dependencies.sh](./get_external_dependencies.sh) script.
@@ -466,10 +480,11 @@ Additional licensing information can be found in the [LICENSE](./LICENSE) and [l
## DISTRIBUTION STATEMENT A. Approved for public release: distribution unlimited.
-This material is based upon work supported by the Assistant Secretary of Defense for Research and Engineering under Air Force Contract No. FA8721-05-C-0002 and/or FA8702-15-D-0001. Any opinions, findings, conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the Assistant Secretary of Defense for Research and Engineering.
+© 2020 MASSACHUSETTS INSTITUTE OF TECHNOLOGY
-© 2020 Massachusetts Institute of Technology.
+Subject to FAR 52.227-11 – Patent Rights – Ownership by the Contractor (May 2014)
+SPDX-License-Identifier: BSD-2-Clause
-The software/firmware is provided to you on an as-is basis.
+This material is based upon work supported by the Name of Sponsor under Air Force Contract No. FA8721-05-C-0002 and/or FA8702-15-D-0001. Any opinions, findings, conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the Name of Sponsor.
-Delivered to the U.S. Government with Unlimited Rights, as defined in DFARS Part 252.227-7013 or 7014 (Feb 2014). Notwithstanding any copyright notice, U.S. Government rights in this work are defined by DFARS 252.227-7013 or DFARS 252.227-7014 as detailed above. Use of this work other than as specifically authorized by the U.S. Government may violate any copyrights that exist in this work.
+The software/firmware is provided to you on an As-Is basis
\ No newline at end of file
diff --git a/cep_architecture.jpg b/cep_architecture.jpg
deleted file mode 100644
index 46fc581a854391a5d8089b3759f3ee6a573a24b0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 102286
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