@@ -518,20 +518,25 @@ Frontend::Frontend(const Snapshot& ss)
518518
519519void Frontend::buildNetwork (NetworkBuilder& nb)
520520{
521+ LOG_DBG_SCOPE (" FRONTEND BUILD NETWORK" );
522+
521523 const Blueprint& bp = blueprint ();
522524 const TaskFinder& finder = nb.finder ();
523525
524526 // [[file]]
527+ LOG_DBG << " BUILD NETWORK FROM FILE" ;
525528 for (auto && file : bp.files ())
526529 readNetworkFromFile (file, nb);
527530
528531 // [[builtin]] type = ram | type = mux-ram
532+ LOG_DBG << " BUILD BUILTIN RAM" ;
529533 for (auto && ram : bp.builtinRAMs ()) {
530534 // We ignore ram.type and always use mux-ram in plaintext mode.
531535 makeMUXRAM (ram, nb);
532536 }
533537
534538 // [[builtin]] type = rom | type = mux-rom
539+ LOG_DBG << " BUILD BUILTIN ROM" ;
535540 for (auto && rom : bp.builtinROMs ()) {
536541 // We ignore rom.type and always use mux-rom in plaintext mode.
537542 makeMUXROM (rom, nb);
@@ -547,6 +552,7 @@ void Frontend::buildNetwork(NetworkBuilder& nb)
547552 };
548553
549554 // [connect]
555+ LOG_DBG << " CONNECT" ;
550556 // We need to treat "... = @..." and "@... = ..." differently from
551557 // "..." = ...".
552558 // First, check if ports that are connected to or from "@..." exist.
@@ -561,13 +567,16 @@ void Frontend::buildNetwork(NetworkBuilder& nb)
561567 }
562568
563569 // Create the network from the builder
570+ LOG_DBG << " CREATE NETWORK FROM BUILDER" ;
564571 network_.emplace (nb.createNetwork ());
565572
566573 // Check if network is valid
574+ LOG_DBG << " CHECK IF NETWORK IS VALID" ;
567575 if (!network_->checkIfValid ())
568576 ERR_DIE (" Network is not valid" );
569577
570578 // Set priority to each task
579+ LOG_DBG << " PRIORITIZE TASKS IN NETWORK" ;
571580 switch (pr_.sched ) {
572581 case SCHED::TOPO:
573582 prioritizeTaskByTopo (network_.value ());
@@ -862,8 +871,8 @@ void make1bitRAMWithMUX(const std::string& nodeName,
862871
863872} // namespace
864873
865- /*
866- // Iyokan-L1 JSON of MUX RAM pre-compiled (and optimized) by Yosys
874+ extern " C " {
875+ // Iyokan-L1 JSON of MUX RAM pre-compiled (and optimized) by Yosys
867876extern char _binary_mux_ram_8_8_8_min_json_start[];
868877extern char _binary_mux_ram_8_8_8_min_json_end[];
869878extern char _binary_mux_ram_8_8_8_min_json_size[];
@@ -873,33 +882,24 @@ extern char _binary_mux_ram_8_16_16_min_json_size[];
873882extern char _binary_mux_ram_9_16_16_min_json_start[];
874883extern char _binary_mux_ram_9_16_16_min_json_end[];
875884extern char _binary_mux_ram_9_16_16_min_json_size[];
876- */
885+ }
877886
878887void makeMUXRAM (const blueprint::BuiltinRAM& ram, NetworkBuilder& nb)
879888{
880889 assert (ram.inWdataWidth == ram.outRdataWidth );
881890
882- /*
883- #define USE_PRECOMPILED_BINARY(addrW, dataW) \
884- if (inAddrWidth == addrW && dataWidth == dataW) { \
885- std::stringstream ss{std::string{ \
886- _binary_mux_ram_##addrW##_##dataW##_##dataW##_min_json_start, \
887- _binary_mux_ram_##addrW##_##dataW##_##dataW##_min_json_end}}; \
888- IyokanL1JSONReader::read(b, ss); \
889- auto net = std::make_shared<typename NetworkBuilder::NetworkType>( \
890- std::move(b)); \
891- \
892- error::Stack err; \
893- net->checkValid(err); \
894- assert(err.empty()); \
895- \
896- return net; \
891+ #define USE_PRECOMPILED_BINARY (addrW, dataW ) \
892+ if (ram.inAddrWidth == addrW && ram.outRdataWidth == dataW) { \
893+ std::stringstream ss{std::string{ \
894+ _binary_mux_ram_##addrW##_##dataW##_##dataW##_min_json_start, \
895+ _binary_mux_ram_##addrW##_##dataW##_##dataW##_min_json_end}}; \
896+ readPrecompiledRAMNetworkFromFile (ram.name , ss, nb, dataW); \
897+ return ; \
897898 }
898899 USE_PRECOMPILED_BINARY (8 , 8 );
899900 USE_PRECOMPILED_BINARY (8 , 16 );
900901 USE_PRECOMPILED_BINARY (9 , 16 );
901902#undef USE_PRECOMPILED_BINARY
902- */
903903
904904 // Create inputs
905905 std::vector<UID> addrInputs;
0 commit comments