Implement functions via MUXes
Merge request reports
Activity
added TechMapper label
requested review from @chertoknd
assigned to @limiro
added 1 commit
- 159d32bc - Temporary pinout fix for generated cell unti cellcharacterisation function is implemented
@limiro Добавил фикс чтобы работало пока Иван не доделал Функцию характеризации суперячеек.
@limiro Теперь надо причесать код чтобы на него не было стыдно смотреть
- Resolved by Мирошниченко Лев Игоревич
335 342 return eqClasses; 336 343 } 337 344 338 void PrepareContext::completePclasses() { 345 std::vector<CellLogPair> PrepareContext::searchMux2x1() const { 346 /* 347 * Function searching multiplexer with specified dataWidth and selectorSize, 348 * currently only 2x1 multiplexer supported. 349 */ 350 const auto& library = context_.techMapContext.library; 351 model::TruthTable mux = kitty::create<kitty::dynamic_truth_table>(3); changed this line in version 9 of the diff
349 */ 350 const auto& library = context_.techMapContext.library; 351 model::TruthTable mux = kitty::create<kitty::dynamic_truth_table>(3); 352 kitty::create_from_hex_string(mux, "D8"); 353 const model::TruthTable mux_canonized = matcher::getPCanon(mux).truthTable; 354 355 std::vector<CellLogPair> res; 356 357 for (const CombCell& cell : library->getCombCells()) { 358 for (size_t outputIndex = 0, size = cell.ctt.size(); outputIndex < size; ++outputIndex) { 359 if (cell.ctt[outputIndex] == mux_canonized) 360 res.emplace_back(&cell, outputIndex); 361 } 362 } 363 364 return res; - Comment on lines +357 to +364
Все ячейки с заданной таблицей истинности можно получить через индексер примерно так
auto &indexer = *context_.techMapContext.indexer; auto *cellLogPairsPtr = indexer.findCombCells(mux_canonized);
Также лучше избежать лишнего копирования и сразу вернуть указатель
Edited by Белин Егор Сергеевич changed this line in version 3 of the diff
625 pin.timingArcs.resize(numInputs); 626 } 627 628 pComplCells_.push_back(std::move(newSuperCell)); 629 return {&pComplCells_.back(), 0}; 630 } 631 632 void PrepareContext::completePClassesMux() { // TODO: uncompleted function 633 const auto &library = *context_.techMapContext.library; 634 const std::vector<CombCell> &existingCells = library.getCombCells(); 635 636 CttMap existingCellsP1; 637 CttMap existingCellsP2; // TODO: rework for certain P classes 638 CttMap existingCellsP3; 639 640 for (const auto &cell : existingCells) { - Comment on lines +633 to +640
Для итерации по ячейкам используем индексер, а не библиотеку. примерно так
for (const auto &[ctt, cellPairs] : indexer.getIndex<model::TruthTable>()) { ... }
Edited by Белин Егор Сергеевич @esbelin Предложенная структура возвращает индекс
StandardCell
ячеек, необходима коллекцияCombCell
ячеек, ожидаю дополнительную информациюUPD: Итерироваться стоит по таблицам истинности
Edited by Мирошниченко Лев Игоревичchanged this line in version 9 of the diff
Еще думаю надо в отдельном файле создать класс генератора на мультиплексорах(
MuxCellGenerator
например), отнаследованный от базового генератораBaseCellGenerator
, и всю его логику перенести туда. В library_prepare остается только completPClassesMux completP2ClassesMux completP3ClassesMuxEdited by Белин Егор СергеевичРазвивая идею, лучше будет создать абстрактный класс, задающий интерфейс генератора ячеек, и несколько реализаций этого интерфейса, остальной код должен работать с интерфейсом
На мой взгляд, подготовитель библиотеки/контекста выполняет работу нескольких сущностей одновременно, попахивает godobject'ом, хорошо бы это декомпозировать
added 1 commit
- 5f7e67d8 - Fix errors with const method and double declaration
added 97 commits
-
5f7e67d8...fc7dc6f8 - 96 commits from branch
main
- b273425e - Merge remote-tracking branch 'origin/main' into functions-on-mux
-
5f7e67d8...fc7dc6f8 - 96 commits from branch
added 20 commits
-
c3937d8b...0230a017 - 19 commits from branch
main
- 02bc4d10 - Merge remote-tracking branch 'origin/main' into functions-on-mux
-
c3937d8b...0230a017 - 19 commits from branch
- Resolved by Черток Никита Дмитриевич
- Resolved by Черток Никита Дмитриевич
- Resolved by Черток Никита Дмитриевич