75 lines
2.8 KiB
C++
75 lines
2.8 KiB
C++
/********************************************************************
|
|
* This file includes functions to read an OpenFPGA architecture file
|
|
* which are built on the libarchopenfpga library
|
|
*******************************************************************/
|
|
/* Headers from vtrutil library */
|
|
#include "vtr_log.h"
|
|
|
|
/* Headers from archopenfpga library */
|
|
#include "read_xml_openfpga_arch.h"
|
|
#include "check_circuit_library.h"
|
|
#include "write_xml_openfpga_arch.h"
|
|
|
|
#include "openfpga_read_arch.h"
|
|
|
|
/* begin namespace openfpga */
|
|
namespace openfpga {
|
|
|
|
/********************************************************************
|
|
* Top-level function to read an OpenFPGA architecture file
|
|
* we use the APIs from the libarchopenfpga library
|
|
*
|
|
* The command will accept an option '--file' which is the architecture
|
|
* file provided by users
|
|
*******************************************************************/
|
|
void read_arch(OpenfpgaContext& openfpga_context,
|
|
const Command& cmd, const CommandContext& cmd_context) {
|
|
/* Check the option '--file' is enabled or not
|
|
* Actually, it must be enabled as the shell interface will check
|
|
* before reaching this fuction
|
|
*/
|
|
CommandOptionId opt_file = cmd.option("file");
|
|
VTR_ASSERT(true == cmd_context.option_enable(cmd, opt_file));
|
|
VTR_ASSERT(false == cmd_context.option_value(cmd, opt_file).empty());
|
|
|
|
std::string arch_file_name = cmd_context.option_value(cmd, opt_file);
|
|
|
|
VTR_LOG("Reading XML architecture '%s'...\n",
|
|
arch_file_name.c_str());
|
|
openfpga_context.mutable_arch() = read_xml_openfpga_arch(arch_file_name.c_str());
|
|
|
|
/* Check the architecture:
|
|
* 1. Circuit library
|
|
* 2. Technology library (TODO)
|
|
* 3. Simulation settings (TODO)
|
|
*/
|
|
check_circuit_library(openfpga_context.arch().circuit_lib);
|
|
}
|
|
|
|
/********************************************************************
|
|
* A function to write an OpenFPGA architecture file
|
|
* we use the APIs from the libarchopenfpga library
|
|
*
|
|
* The command will accept an option '--file' which is the architecture
|
|
* file provided by users
|
|
*******************************************************************/
|
|
void write_arch(const OpenfpgaContext& openfpga_context,
|
|
const Command& cmd, const CommandContext& cmd_context) {
|
|
/* Check the option '--file' is enabled or not
|
|
* Actually, it must be enabled as the shell interface will check
|
|
* before reaching this fuction
|
|
*/
|
|
CommandOptionId opt_file = cmd.option("file");
|
|
VTR_ASSERT(true == cmd_context.option_enable(cmd, opt_file));
|
|
VTR_ASSERT(false == cmd_context.option_value(cmd, opt_file).empty());
|
|
|
|
std::string arch_file_name = cmd_context.option_value(cmd, opt_file);
|
|
|
|
VTR_LOG("Writing XML architecture to '%s'...\n",
|
|
arch_file_name.c_str());
|
|
write_xml_openfpga_arch(arch_file_name.c_str(), openfpga_context.arch());
|
|
}
|
|
|
|
} /* end namespace openfpga */
|
|
|