add mutators for delay_info
This commit is contained in:
parent
03a64e2ad8
commit
5b0c9572c3
|
@ -572,6 +572,62 @@ void CircuitLibrary::set_port_sram_orgz(const CircuitModelId& circuit_model_id,
|
|||
return;
|
||||
}
|
||||
|
||||
/* Delay information */
|
||||
/* Add a delay info:
|
||||
* Check if the delay type is in the range of vector
|
||||
* if yes, assign values
|
||||
* if no, resize and assign values
|
||||
*/
|
||||
void CircuitLibrary::add_delay_info(const CircuitModelId& circuit_model_id,
|
||||
const enum spice_model_delay_type& delay_type) {
|
||||
/* validate the circuit_model_id */
|
||||
VTR_ASSERT_SAFE(valid_circuit_model_id(circuit_model_id));
|
||||
/* Check the range of vector */
|
||||
if (size_t(delay_type) >= delay_types_[circuit_model_id].size()) {
|
||||
/* Resize */
|
||||
delay_types_[circuit_model_id].resize(size_t(delay_type) + 1);
|
||||
delay_in_port_names_[circuit_model_id].resize(size_t(delay_type) + 1);
|
||||
delay_out_port_names_[circuit_model_id].resize(size_t(delay_type) + 1);
|
||||
delay_values_[circuit_model_id].resize(size_t(delay_type) + 1);
|
||||
}
|
||||
delay_types_[circuit_model_id][size_t(delay_type)] = delay_type;
|
||||
return;
|
||||
}
|
||||
|
||||
void CircuitLibrary::set_delay_in_port_names(const CircuitModelId& circuit_model_id,
|
||||
const enum spice_model_delay_type& delay_type,
|
||||
const std::string& in_port_names) {
|
||||
/* validate the circuit_model_id */
|
||||
VTR_ASSERT_SAFE(valid_circuit_model_id(circuit_model_id));
|
||||
/* Validate delay_type */
|
||||
VTR_ASSERT_SAFE(valid_delay_type(circuit_model_id, delay_type));
|
||||
delay_in_port_names_[circuit_model_id][size_t(delay_type)] = in_port_names;
|
||||
return;
|
||||
}
|
||||
|
||||
void CircuitLibrary::set_delay_out_port_names(const CircuitModelId& circuit_model_id,
|
||||
const enum spice_model_delay_type& delay_type,
|
||||
const std::string& out_port_names) {
|
||||
/* validate the circuit_model_id */
|
||||
VTR_ASSERT_SAFE(valid_circuit_model_id(circuit_model_id));
|
||||
/* Validate delay_type */
|
||||
VTR_ASSERT_SAFE(valid_delay_type(circuit_model_id, delay_type));
|
||||
delay_out_port_names_[circuit_model_id][size_t(delay_type)] = out_port_names;
|
||||
return;
|
||||
}
|
||||
|
||||
void CircuitLibrary::set_delay_values(const CircuitModelId& circuit_model_id,
|
||||
const enum spice_model_delay_type& delay_type,
|
||||
const std::string& delay_values) {
|
||||
/* validate the circuit_model_id */
|
||||
VTR_ASSERT_SAFE(valid_circuit_model_id(circuit_model_id));
|
||||
/* Validate delay_type */
|
||||
VTR_ASSERT_SAFE(valid_delay_type(circuit_model_id, delay_type));
|
||||
delay_values_[circuit_model_id][size_t(delay_type)] = delay_values;
|
||||
return;
|
||||
}
|
||||
|
||||
/* Buffer/Inverter-related parameters */
|
||||
|
||||
/************************************************************************
|
||||
* Internal Mutators
|
||||
|
@ -656,6 +712,12 @@ bool CircuitLibrary::valid_circuit_port_id(const CircuitModelId& circuit_model_i
|
|||
return ( size_t(circuit_port_id) < port_ids_[circuit_model_id].size() ) && ( circuit_port_id == port_ids_[circuit_model_id][circuit_port_id] );
|
||||
}
|
||||
|
||||
bool CircuitLibrary::valid_delay_type(const CircuitModelId& circuit_model_id, const enum spice_model_delay_type& delay_type) const {
|
||||
/* validate the circuit_model_id */
|
||||
VTR_ASSERT_SAFE(valid_circuit_model_id(circuit_model_id));
|
||||
return ( size_t(delay_type) < delay_types_[circuit_model_id].size() ) && ( delay_type == delay_types_[circuit_model_id][size_t(delay_type)] );
|
||||
}
|
||||
|
||||
/* Invalidators */
|
||||
/* Empty fast lookup for circuit_models*/
|
||||
void CircuitLibrary::invalidate_circuit_model_lookup() const {
|
||||
|
|
|
@ -309,6 +309,18 @@ class CircuitLibrary {
|
|||
void set_port_sram_orgz(const CircuitModelId& circuit_model_id,
|
||||
const CircuitPortId& circuit_port_id,
|
||||
const enum e_sram_orgz& sram_orgz);
|
||||
/* Delay information */
|
||||
void add_delay_info(const CircuitModelId& circuit_model_id,
|
||||
const enum spice_model_delay_type& delay_type);
|
||||
void set_delay_in_port_names(const CircuitModelId& circuit_model_id,
|
||||
const enum spice_model_delay_type& delay_type,
|
||||
const std::string& in_port_names);
|
||||
void set_delay_out_port_names(const CircuitModelId& circuit_model_id,
|
||||
const enum spice_model_delay_type& delay_type,
|
||||
const std::string& out_port_names);
|
||||
void set_delay_values(const CircuitModelId& circuit_model_id,
|
||||
const enum spice_model_delay_type& delay_type,
|
||||
const std::string& delay_values);
|
||||
public: /* Internal mutators: link circuit_models */
|
||||
void set_circuit_model_buffer(const CircuitModelId& circuit_model_id, const enum e_buffer_type buffer_type, const bool& existence, const std::string& circuit_model_name);
|
||||
void set_circuit_model_port_inv_circuit_model(const CircuitModelId& circuit_model_id);
|
||||
|
@ -318,6 +330,7 @@ class CircuitLibrary {
|
|||
/* Validators */
|
||||
bool valid_circuit_model_id(const CircuitModelId& circuit_model_id) const;
|
||||
bool valid_circuit_port_id(const CircuitModelId& circuit_model_id, const CircuitPortId& circuit_port_id) const;
|
||||
bool valid_delay_type(const CircuitModelId& circuit_model_id, const enum spice_model_delay_type& delay_type) const;
|
||||
/* Invalidators */
|
||||
void invalidate_circuit_model_lookup() const;
|
||||
void invalidate_circuit_model_port_lookup(const CircuitModelId& circuit_model_id) const;
|
||||
|
|
|
@ -12,7 +12,8 @@ enum e_spice_tech_lib_type {
|
|||
|
||||
enum spice_model_delay_type {
|
||||
SPICE_MODEL_DELAY_RISE,
|
||||
SPICE_MODEL_DELAY_FALL
|
||||
SPICE_MODEL_DELAY_FALL,
|
||||
NUM_CIRCUIT_MODEL_DELAY_TYPES
|
||||
};
|
||||
|
||||
/*Struct for a SPICE model of a module*/
|
||||
|
|
Loading…
Reference in New Issue