From eb2265a2bf6415665e31a13157fb561d3c14bf73 Mon Sep 17 00:00:00 2001 From: gatecat Date: Sun, 30 May 2021 15:50:12 +0100 Subject: mistral: Make RBF compression optional Signed-off-by: gatecat --- mistral/bitstream.cc | 7 ++++++- mistral/main.cc | 3 +++ 2 files changed, 9 insertions(+), 1 deletion(-) (limited to 'mistral') diff --git a/mistral/bitstream.cc b/mistral/bitstream.cc index 92d86410..340ba6b9 100644 --- a/mistral/bitstream.cc +++ b/mistral/bitstream.cc @@ -34,6 +34,8 @@ struct MistralBitgen ctx->init_base_bitstream(); // Default options cv->opt_b_set(CycloneV::ALLOW_DEVICE_WIDE_OUTPUT_ENABLE_DIS, true); + if (!ctx->setting("compress_rbf", false)) + cv->opt_b_set(CycloneV::COMPRESSION_DIS, true); cv->opt_n_set(CycloneV::CRC_DIVIDE_ORDER, 8); cv->opt_b_set(CycloneV::CVP_CONF_DONE_EN, true); cv->opt_b_set(CycloneV::DEVICE_WIDE_RESET_EN, true); @@ -42,7 +44,10 @@ struct MistralBitgen cv->opt_b_set(CycloneV::NCEO_DIS, true); cv->opt_b_set(CycloneV::OCT_DONE_DIS, true); cv->opt_r_set(CycloneV::OPT_A, 0x1dff); - cv->opt_r_set(CycloneV::OPT_B, 0xffffff402dffffffULL); + if (!ctx->setting("compress_rbf", false)) + cv->opt_r_set(CycloneV::OPT_B, 0xffffff40adffffffULL); + else + cv->opt_r_set(CycloneV::OPT_B, 0xffffff402dffffffULL); cv->opt_b_set(CycloneV::RELEASE_CLEARS_BEFORE_TRISTATES_DIS, true); cv->opt_b_set(CycloneV::RETRY_CONFIG_ON_ERROR_EN, true); cv->opt_r_set(CycloneV::START_UP_CLOCK, 0x3F); diff --git a/mistral/main.cc b/mistral/main.cc index 9147a68b..7b4f9594 100644 --- a/mistral/main.cc +++ b/mistral/main.cc @@ -51,6 +51,7 @@ po::options_description MistralCommandHandler::getArchOptions() specific.add_options()("device", po::value(), "device name (e.g. 5CSEBA6U23I7)"); specific.add_options()("qsf", po::value(), "path to QSF constraints file"); specific.add_options()("rbf", po::value(), "RBF bitstream to write"); + specific.add_options()("compress-rbf", "generate compressed bitstream"); return specific; } @@ -82,6 +83,8 @@ std::unique_ptr MistralCommandHandler::createContext(std::unordered_map chipArgs.mistral_root = vm["mistral"].as(); chipArgs.device = vm["device"].as(); auto ctx = std::unique_ptr(new Context(chipArgs)); + if (vm.count("compress-rbf")) + ctx->settings[ctx->id("compress_rbf")] = Property::State::S1; return ctx; } -- cgit v1.2.3