add advanced check in configurable memories
This commit is contained in:
parent
62c506182c
commit
3a26bb5eef
|
@ -552,3 +552,4 @@ bool check_circuit_library(const CircuitLibrary& circuit_lib) {
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
/* Headers from archopenfpga library */
|
/* Headers from archopenfpga library */
|
||||||
#include "read_xml_openfpga_arch.h"
|
#include "read_xml_openfpga_arch.h"
|
||||||
#include "check_circuit_library.h"
|
#include "check_circuit_library.h"
|
||||||
|
#include "circuit_library_utils.h"
|
||||||
#include "write_xml_openfpga_arch.h"
|
#include "write_xml_openfpga_arch.h"
|
||||||
|
|
||||||
#include "openfpga_read_arch.h"
|
#include "openfpga_read_arch.h"
|
||||||
|
@ -50,6 +51,12 @@ int read_arch(OpenfpgaContext& openfpga_context,
|
||||||
return CMD_EXEC_FATAL_ERROR;
|
return CMD_EXEC_FATAL_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (false == check_configurable_memory_circuit_model(openfpga_context.arch().config_protocol.type(),
|
||||||
|
openfpga_context.arch().circuit_lib,
|
||||||
|
openfpga_context.arch().config_protocol.memory_model())) {
|
||||||
|
return CMD_EXEC_FATAL_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
return CMD_EXEC_SUCCESS;
|
return CMD_EXEC_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
#include "vtr_assert.h"
|
#include "vtr_assert.h"
|
||||||
#include "vtr_log.h"
|
#include "vtr_log.h"
|
||||||
|
|
||||||
|
#include "check_circuit_library.h"
|
||||||
#include "circuit_library_utils.h"
|
#include "circuit_library_utils.h"
|
||||||
|
|
||||||
/* begin namespace openfpga */
|
/* begin namespace openfpga */
|
||||||
|
@ -226,4 +227,40 @@ std::vector<std::string> find_circuit_library_unique_verilog_netlists(const Circ
|
||||||
return netlists;
|
return netlists;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/************************************************************************
|
||||||
|
* Advanced check if the circuit model of configurable memory
|
||||||
|
* satisfy the needs of configuration protocol
|
||||||
|
* - Configuration chain -based: we check if we have a CCFF model
|
||||||
|
* - Frame -based: we check if we have a SRAM model which has BL and WL
|
||||||
|
*
|
||||||
|
***********************************************************************/
|
||||||
|
bool check_configurable_memory_circuit_model(const e_config_protocol_type& config_protocol_type,
|
||||||
|
const CircuitLibrary& circuit_lib,
|
||||||
|
const CircuitModelId& config_mem_circuit_model) {
|
||||||
|
size_t num_err = 0;
|
||||||
|
|
||||||
|
switch (config_protocol_type) {
|
||||||
|
case CONFIG_MEM_SCAN_CHAIN:
|
||||||
|
num_err = check_ccff_circuit_model_ports(circuit_lib,
|
||||||
|
config_mem_circuit_model);
|
||||||
|
break;
|
||||||
|
case CONFIG_MEM_STANDALONE:
|
||||||
|
case CONFIG_MEM_MEMORY_BANK:
|
||||||
|
case CONFIG_MEM_FRAME_BASED:
|
||||||
|
num_err = check_sram_circuit_model_ports(circuit_lib,
|
||||||
|
config_mem_circuit_model,
|
||||||
|
true);
|
||||||
|
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
VTR_LOGF_ERROR(__FILE__, __LINE__,
|
||||||
|
"Invalid type of configuration protocol!\n");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
VTR_LOG("Found %ld errors when checking configurable memory circuit models!\n",
|
||||||
|
num_err);
|
||||||
|
return (0 == num_err);
|
||||||
|
}
|
||||||
|
|
||||||
} /* end namespace openfpga */
|
} /* end namespace openfpga */
|
||||||
|
|
|
@ -38,6 +38,10 @@ std::vector<CircuitPortId> find_circuit_library_global_ports(const CircuitLibrar
|
||||||
|
|
||||||
std::vector<std::string> find_circuit_library_unique_verilog_netlists(const CircuitLibrary& circuit_lib);
|
std::vector<std::string> find_circuit_library_unique_verilog_netlists(const CircuitLibrary& circuit_lib);
|
||||||
|
|
||||||
|
bool check_configurable_memory_circuit_model(const e_config_protocol_type& config_protocol_type,
|
||||||
|
const CircuitLibrary& circuit_lib,
|
||||||
|
const CircuitModelId& config_mem_circuit_model);
|
||||||
|
|
||||||
} /* end namespace openfpga */
|
} /* end namespace openfpga */
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue