@@ -518,20 +518,25 @@ Frontend::Frontend(const Snapshot& ss)
518
518
519
519
void Frontend::buildNetwork (NetworkBuilder& nb)
520
520
{
521
+ LOG_DBG_SCOPE (" FRONTEND BUILD NETWORK" );
522
+
521
523
const Blueprint& bp = blueprint ();
522
524
const TaskFinder& finder = nb.finder ();
523
525
524
526
// [[file]]
527
+ LOG_DBG << " BUILD NETWORK FROM FILE" ;
525
528
for (auto && file : bp.files ())
526
529
readNetworkFromFile (file, nb);
527
530
528
531
// [[builtin]] type = ram | type = mux-ram
532
+ LOG_DBG << " BUILD BUILTIN RAM" ;
529
533
for (auto && ram : bp.builtinRAMs ()) {
530
534
// We ignore ram.type and always use mux-ram in plaintext mode.
531
535
makeMUXRAM (ram, nb);
532
536
}
533
537
534
538
// [[builtin]] type = rom | type = mux-rom
539
+ LOG_DBG << " BUILD BUILTIN ROM" ;
535
540
for (auto && rom : bp.builtinROMs ()) {
536
541
// We ignore rom.type and always use mux-rom in plaintext mode.
537
542
makeMUXROM (rom, nb);
@@ -547,6 +552,7 @@ void Frontend::buildNetwork(NetworkBuilder& nb)
547
552
};
548
553
549
554
// [connect]
555
+ LOG_DBG << " CONNECT" ;
550
556
// We need to treat "... = @..." and "@... = ..." differently from
551
557
// "..." = ...".
552
558
// First, check if ports that are connected to or from "@..." exist.
@@ -561,13 +567,16 @@ void Frontend::buildNetwork(NetworkBuilder& nb)
561
567
}
562
568
563
569
// Create the network from the builder
570
+ LOG_DBG << " CREATE NETWORK FROM BUILDER" ;
564
571
network_.emplace (nb.createNetwork ());
565
572
566
573
// Check if network is valid
574
+ LOG_DBG << " CHECK IF NETWORK IS VALID" ;
567
575
if (!network_->checkIfValid ())
568
576
ERR_DIE (" Network is not valid" );
569
577
570
578
// Set priority to each task
579
+ LOG_DBG << " PRIORITIZE TASKS IN NETWORK" ;
571
580
switch (pr_.sched ) {
572
581
case SCHED::TOPO:
573
582
prioritizeTaskByTopo (network_.value ());
@@ -862,8 +871,8 @@ void make1bitRAMWithMUX(const std::string& nodeName,
862
871
863
872
} // namespace
864
873
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
867
876
extern char _binary_mux_ram_8_8_8_min_json_start[];
868
877
extern char _binary_mux_ram_8_8_8_min_json_end[];
869
878
extern 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[];
873
882
extern char _binary_mux_ram_9_16_16_min_json_start[];
874
883
extern char _binary_mux_ram_9_16_16_min_json_end[];
875
884
extern char _binary_mux_ram_9_16_16_min_json_size[];
876
- */
885
+ }
877
886
878
887
void makeMUXRAM (const blueprint::BuiltinRAM& ram, NetworkBuilder& nb)
879
888
{
880
889
assert (ram.inWdataWidth == ram.outRdataWidth );
881
890
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 ; \
897
898
}
898
899
USE_PRECOMPILED_BINARY (8 , 8 );
899
900
USE_PRECOMPILED_BINARY (8 , 16 );
900
901
USE_PRECOMPILED_BINARY (9 , 16 );
901
902
#undef USE_PRECOMPILED_BINARY
902
- */
903
903
904
904
// Create inputs
905
905
std::vector<UID> addrInputs;
0 commit comments